Drupal 8 biến_get


9

Tôi có một số mã trong Drupal 7 đang sử dụng biến_get. Bây giờ tôi muốn viết mã trong Drupal 8. Vì vậy, tôi đã đọc nhưng nó không giúp tôi nhiều.

Làm thế nào để viết mã này trong Drupal 8 từ mã trong Drupal 7?

$types = array_values(variable_get('test_content_types', array()));

hoặc cái này

'#default_value' => variable_get('test_content_types', array()),

Một số gợi ý.

Câu trả lời:


16

Trong Drupal 7

 $data =  variable_get('test_content_types');

Trong Drupal 8

 $data = \Drupal::state()->get('test_content_types'); 

Để biết thêm thông tin về "truy cập", "đặt", "xóa" lượt truy cập - Bước 5: Cách nâng cấp các biến D7 lên hệ thống trạng thái của D8 .


Cảm ơn bạn @ darol100 .. Liên kết là tốt đẹp .. Bây giờ tôi không hiểu. Vì vậy, tôi có thể viết $ data = \ Drupal :: state () -> get ('test_content_types', mảng ());
SakaSerbia

7
Xin lưu ý rằng trong D8 có sự khác biệt giữa trạng thái và cấu hình. Như đã lưu ý trên drupal.org/developing/api/8/configuration : "Cấu hình là nơi lưu trữ thông tin mà bạn muốn đồng bộ hóa từ phát triển sang sản xuất. Thông tin này thường được tạo trong quá trình xây dựng trang web và thường không được tạo bởi người dùng thông thường trong quá trình vận hành trang bình thường. Bạn nên sử dụng API trạng thái, chứ không phải cấu hình, để lưu trữ các biến cục bộ không nên di chuyển giữa các phiên bản. Sử dụng trạng thái cho các giá trị hệ thống ẩn và nếu bạn không bao giờ muốn triển khai nó giữa các môi trường. "
marcvangend

5

Câu trả lời được chấp nhận là một nửa câu trả lời. Như marcvangend lưu ý, có hai tùy chọn trong Drupal 8 cho những gì từng được lưu trữ trong bảng biến và được lưu trữ và truy xuất với variable_set()variable_get(). Đầu tiên, được ghi lại trong câu trả lời của darol100, là API Nhà nước .

Thứ hai là API cấu hình và nên được sử dụng trong hầu hết các trường hợp bạn có biểu mẫu cấu hình. Nó yêu cầu tối thiểu trong mô-đun của bạn một tệp cài đặt cấu hình, ví dụ config/install/example.settings.yml. Đối với một phần cấu hình (có nhiều giá trị tiềm năng), tệp đó chỉ có thể chứa:

test_content_types: - article

Và sau đó sử dụng giá trị với:

$types = \Drupal::config('example.settings')->get('test_content_types');

Hoặc thay đổi các giá trị được lưu trữ bằng:

\Drupal::service('config.factory')
  ->getEditable('example.settings')
  ->set('test_content_types', ['article', 'page'])
  ->save();

Xem thêm tài liệu Drupal 8 để nâng cấp cấu hình D7 đến D8sử dụng cấu hình trong các mô-đun .


1
Đối với tôi, đây là câu trả lời chính xác cho câu hỏi. Tôi hiện đang thực hiện chuyển đổi từ Drupal 7 và nó đã giúp tôi rất nhiều.
Geat
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.