Làm thế nào để hủy cài đặt mô-đun của tôi nếu các yêu cầu không được đáp ứng


7

Mô-đun của tôi phụ thuộc vào thư viện PHP (trang web / tất cả / thư viện / xyz / xyz-library.php). Tôi muốn drupal tiếp tục cài đặt chỉ khi yêu cầu thư viện của mô-đun của tôi được đáp ứng.

Tôi muốn một cái gì đó thuộc loại này, trong mymodule.install:

function mymodule_install() {
  if( library_exists() )   return; //continue with installation
  else{
    drupal_set_message(t('Installation failed. Please put xyz-library.php in sites/all/libraries/xyz folder.'), 'error');
    return FALSE; // installation failed
  }
}

Câu trả lời:


12

Bạn có thể làm điều này trong hook_requirements, từ tài liệu :

Trong giai đoạn 'cài đặt', ví dụ, các mô-đun có thể khẳng định rằng các phiên bản thư viện hoặc máy chủ có sẵn hoặc đủ. Lưu ý rằng việc cài đặt một mô-đun có thể xảy ra trong quá trình cài đặt Drupal (bằng install.php) với cấu hình cài đặt hoặc sau đó bằng tay. Do đó, các yêu cầu về thời gian cài đặt phải được kiểm tra mà không cần truy cập vào API Drupal đầy đủ, vì nó không khả dụng trong quá trình install.php. Để bản địa hóa, ví dụ bạn nên sử dụng $ t = get_t () để lấy tên hàm nội địa hóa thích hợp (t () hoặc st ()). Nếu một yêu cầu có mức độ nghiêm trọng REQUIREMENT_ERROR, install.php sẽ hủy bỏ hoặc ít nhất mô-đun sẽ không cài đặt. Các mức độ nghiêm trọng khác không có ảnh hưởng đến việc cài đặt. Phụ thuộc mô-đun không thuộc các yêu cầu cài đặt này,

Sau khi kiểm tra, bạn trả về mảng (xem lại tài liệu) với REQUIREMENT_ERROR.

function example_requirements($phase) {
  $requirements = array();
  // Ensure translations do not break at install time
  $t = get_t();

  $requirements['example'] = array(
    'title' => $t('Example Library'),
  );

  $libraries = libraries_get_libraries();
  if (isset($libraries['example'])) {
    $requirements['example']['value'] = $t('Installed');
    $requirements['example']['severity'] = REQUIREMENT_OK;
  }
  else {
    $requirements['example']['value'] = $t('Not Installed');
    $requirements['example']['severity'] = REQUIREMENT_ERROR;
    $requirements['example']['description'] = $t('Please install the example library %url.', array('%url' => 'http://example.com'));
  }

  return $requirements;
}

Bạn có thể kiểm tra ví dụ mã này ở đây .


4

Âm thanh giống như bạn đang tìm kiếm hook numquirements () , sẽ hủy bỏ cài đặt nếu các yêu cầu không được đáp ứng.

Vì vậy, nếu mô-đun của bạn được đặt tên mymodule, bạn sẽ tạo một hàm được gọi mymodule_requirements()bên trong tệp mymodule.install.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.