Điểm:0

Có thể lập trình thay đổi đường dẫn config_sync_directory sau khi cài đặt cấu hình không?

lá cờ cn

Cài đặt Drupal 9 bằng cài đặt cấu hình tùy chỉnh, tôi đã xác định "config_sync_thư mục" Trong cài đặt.php trong tập tin $settings mảng để nhận cấu hình hồ sơ trong khi cài đặt.

  1. Trong quá trình cài đặt trang web, Drupal yêu cầu chỉ định thư mục "config" trong tệp cài đặt
  2. Trong cấu hình tùy chỉnh, tôi có một số cấu hình mặc định, tôi muốn Drupal đọc cấu hình từ thư mục đó trong khi cài đặt, đường dẫn tôi đã chỉ định trong tệp cài đặt.
  3. Bây giờ, sau khi cài đặt, tôi muốn chỉ định một thư mục đồng bộ hóa cấu hình riêng và không muốn chỉnh sửa lại tệp settings.php, chỉ muốn cập nhật đường dẫn thư mục đồng bộ hóa từ một hook trong mô-đun tùy chỉnh.

Có thể thay đổi đường dẫn theo chương trình từ một cái móc không?

leymannx avatar
lá cờ ne
Bạn chỉ có thể chỉnh sửa settings.php tại sao bạn cần cập nhật nó từ một số hook?
Prashant Chauhan avatar
lá cờ cn
Vui lòng kiểm tra bên dưới để biết lý do tôi muốn điều này nhưng có vẻ như không thể thực hiện được.
leymannx avatar
lá cờ ne
Bạn có thể cập nhật giá trị đó bất cứ lúc nào sau khi cài đặt chỉ bằng cách chỉnh sửa settings.php. Tôi không thấy bất kỳ lời giải thích nào làm rõ lý do tại sao bạn không thể làm như vậy. Chỉ cần mở settings.php trong trình chỉnh sửa mà bạn chọn (có thể xóa quyền của tệp trước), chỉnh sửa giá trị đó, lưu (và có thể tăng cường lại quyền của tệp). Chỉ cần đảm bảo bạn cũng di chuyển thư mục cấu hình đến vị trí mới. Đó là tất cả.
Prashant Chauhan avatar
lá cờ cn
@leymannx Thực ra điều tôi muốn đạt được là 1. Trong khi cài đặt trang web, Drupal yêu cầu chỉ định thư mục "config" trong tệp cài đặt 2. Trong cấu hình tùy chỉnh, tôi có một số cấu hình mặc định, tôi muốn Drupal đọc cấu hình từ thư mục đó trong khi cài đặt, đường dẫn tôi đã chỉ định trong tệp cài đặt. 3. Bây giờ, sau khi cài đặt, tôi muốn chỉ định một thư mục đồng bộ hóa cấu hình riêng và không muốn chỉnh sửa lại tệp settings.php mà chỉ muốn cập nhật đường dẫn thư mục đồng bộ hóa từ một hook trong mô-đun tùy chỉnh. Hy vọng tôi đã làm rõ các yêu cầu.
leymannx avatar
lá cờ ne
Khi bạn cài đặt một cấu hình, cấu hình của cấu hình đó sẽ được đọc từ thư mục cấu hình của cấu hình bất kể bạn đã định cấu hình gì trong settings.php. Và điều thực sự quan trọng là bạn thêm điều đó vào câu hỏi của mình. Nếu không, bạn sẽ không nhận được câu trả lời mà bạn đang tìm kiếm.
Prashant Chauhan avatar
lá cờ cn
@leymannx Không phải vậy, trong quá trình cài đặt, nó đọc cấu hình từ đường dẫn cấu hình được cung cấp trong tệp cài đặt.
leymannx avatar
lá cờ ne
Nếu điều đó không hoạt động trong khi cài đặt, thì có gì đó không ổn trong hồ sơ của bạn.Kiểm tra các thư mục cấu hình (tối thiểu, tiêu chuẩn) của cấu hình khác để biết cấu hình được cho là chính xác ở đâu.
Điểm:0
lá cờ us

Các mô-đun có thể ghi đè các giá trị trong các đối tượng cấu hình. Như được mô tả trong Hệ thống ghi đè cấu hình / Cung cấp ghi đè từ các mô-đun, một mô-đun cần triển khai một dịch vụ được gắn thẻ config.factory.override. Lớp được sử dụng cho dịch vụ cần triển khai Giao diện ConfigFactoryOverride, như ví dụ được đưa ra trong tài liệu.

dịch vụ:
  config_example.overrider:
    lớp: Drupal\config_example\Config\ConfigExampleOverrides
    thẻ:
      - {tên: config.factory.override, ưu tiên: 5}
không gian tên Drupal\config_example\Config;

sử dụng Drupal\Core\Cache\CacheableMetadata;
sử dụng Drupal\Core\Config\ConfigFactoryOverrideInterface;
sử dụng Drupal\Core\Config\StorageInterface;

/**
 * Ghi đè cấu hình ví dụ.
 */
lớp ConfigExampleOverrides triển khai ConfigFactoryOverrideInterface {

  /**
   * {@inheritdoc}
   */
  hàm công khai loadOverrides($names) {
    $overrides = [];
    if (in_array('system.site', $names)) {
      $overrides['system.site'] = ['name' => 'Tên trang web bị ghi đè!'];
    }
    trả về ghi đè $;
  }

  /**
   * {@inheritdoc}
   */
  hàm công khai getCacheSuffix() {
    trả về 'ConfigExampleOverrider';
  }
  
  /**
   * {@inheritdoc}
   */
  hàm công khai getCacheableMetadata($name) {
    trả về CacheableMetadata mới();
  }

  /**
   * {@inheritdoc}
   */
  chức năng công cộng createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
    trả về NULL;
  }

}

Hãy nhớ rằng giá trị trong cài đặt.php tệp luôn ghi đè các giá trị mô-đun. Đối với một mô-đun để đặt giá trị cấu hình, cài đặt.php tập tin không cần thiết lập nó.

Prashant Chauhan avatar
lá cờ cn
Tôi nghĩ rằng bạn hiểu lầm câu hỏi của tôi. Tôi đang xác định đường dẫn thư mục đồng bộ hóa cấu hình trong settings.php đang hoạt động bình thường. Bây giờ, sau khi Drupal được cài đặt thành công, tôi muốn cập nhật đường dẫn thư mục đồng bộ hóa cấu hình này và nó không phải là cấu hình, nó là Cài đặt.
lá cờ cn
Không có móc để ghi đè cài đặt toàn cầu nếu đó là ý của bạn. Không cần cái nào, bạn chỉ cần chỉnh sửa settings.php để phản ánh giá trị mới mong muốn thay vì chỉnh sửa hook trong tệp mô-đun
4uk4 avatar
lá cờ cn
Có, Cài đặt theo thiết kế chỉ đọc. Chỉ trong các thử nghiệm, chúng mới thay thế toàn bộ phiên bản đơn lẻ. Ví dụ: [KernelTestBase::setUpFilesystem](https://api.drupal.org/api/drupal/core%21tests%21Drupal%21KernelTests%21KernelTestBase.php/function/KernelTestBase%3A%3AsetUpFilesystem)
Prashant Chauhan avatar
lá cờ cn
Cảm ơn tất cả đã làm rõ.
Rafael avatar
lá cờ uz
Với cli drush config-import --source=SOURCE bạn có thể xác định các thư mục cấu hình cụ thể.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.