Drupal 8 variable_get


9

Saya punya beberapa kode di Drupal 7 yang menggunakan variabel_get. Sekarang saya ingin menulis kode di Drupal 8. Jadi saya membaca ini tetapi tidak banyak membantu saya.

Bagaimana cara menulis kode ini di Drupal 8 dari kode di Drupal 7?

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

atau ini

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

Beberapa saran.

Jawaban:


16

Di Drupal 7

 $data =  variable_get('test_content_types');

Di Drupal 8

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

Untuk informasi lebih lanjut tentang kunjungan "get", "set", "delete" - Langkah 5: Cara memutakhirkan variabel D7 ke sistem keadaan D8 .


Terima kasih @ darol100 .. Tautannya bagus .. Sekarang saya mengerti. Jadi saya bisa menulis $ data = \ Drupal :: state () -> get ('test_content_types', array ());
SakaSerbia

7
Ketahuilah bahwa di D8 ada perbedaan antara status dan konfigurasi. Sebagaimana dicatat di drupal.org/developing/api/8/configuration : "Konfigurasi adalah tempat untuk menyimpan informasi yang ingin Anda sinkronkan dari pengembangan ke produksi. Informasi ini sering dibuat selama pembangunan situs dan biasanya tidak dihasilkan oleh pengguna biasa selama operasi situs normal. Anda harus menggunakan API Negara, bukan konfigurasi, untuk menyimpan variabel lokal yang tidak boleh berpindah antar instance. Gunakan status untuk nilai sistem tersembunyi, dan jika Anda tidak ingin menggunakannya di antara lingkungan. "
marcvangend

5

Jawaban yang diterima adalah setengah dari jawaban. Sebagai catatan marcvangend, ada dua opsi dalam Drupal 8 untuk apa yang dulu disimpan dalam tabel variabel dan disimpan dan diambil dengan variable_set()dan variable_get(). Yang pertama, didokumentasikan dalam jawaban darol100, adalah API Negara .

Yang kedua adalah Configuration API dan harus digunakan dalam banyak kasus di mana Anda memiliki bentuk konfigurasi. Hal ini membutuhkan di minimum dalam modul Anda file instalasi konfigurasi, misalnya config/install/example.settings.yml. Untuk satu bagian konfigurasi (dengan beberapa nilai potensial), file tersebut dapat berisi misalnya:

test_content_types: - article

Dan kemudian gunakan nilainya dengan:

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

Atau ubah nilai yang disimpan dengan:

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

Lihat juga dokumentasi Drupal 8 untuk peningkatan konfigurasi D7 ke D8 dan menggunakan konfigurasi dalam modul .


1
Bagi saya, ini adalah jawaban yang benar untuk pertanyaan itu. Saya saat ini sedang melakukan transisi dari Drupal 7 dan itu banyak membantu saya.
Geat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.