Drupal 8のvariable_get


9

Drupal 7には、variable_getを使用しているコードがあります。今、私は、だから私は読んでいたのDrupal 8にコード書きたい、これをが、そのは私をたくさん助けにはなりませんでした。

Drupal 7のコードからDrupal 8のこのコードを記述する方法は?

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

またはこれ

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

いくつかの提案。

回答:


16

Drupal 7で

 $data =  variable_get('test_content_types');

Drupal 8では

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

「取得」、「設定」、「削除」の詳細については、訪問- ステップ5:D7変数をD8の状態システムにアップグレードする方法をご覧ください。


ありがとう@ darol100 ..リンクはいいです。$ data = \ Drupal :: state()-> get( 'test_content_types'、array());と書くことができます
SakaSerbia

7
D8では、状態と構成に違いがあることに注意してください。drupal.org/developing/api/8/configurationに記載されているように、「設定は、開発から本番に同期する必要のある情報を保存する場所です。この情報は多くの場合、サイトの構築中に作成され、通常のユーザーによって生成されません。通常のサイト操作中。インスタンス間を移動してはならないローカル変数を格納するには、構成ではなくState APIを使用する必要があります。非表示のシステム値には状態を使用し、環境間で展開したくない場合は、」
marcvangend

5

受け入れられた答えは答えの半分です。marcvangendノートとして、変数テーブルに格納するために使用して保存し、検索した何のためのDrupal 8に2つの選択肢があるvariable_set()とはvariable_get()。最初は、darol100の回答に記載されているように、State APIです。

2つ目は構成APIであり、構成フォームがあるほとんどの場合に使用する必要があります。それは時に必要となる最低限例えば、あなたのモジュール構成のインストールファイルをconfig/install/example.settings.yml。単一の構成(複数の潜在的な値を持つ)の場合、そのファイルには次の例のみを含めることができます。

test_content_types: - article

そして、値を次のように使用します:

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

または、次のようにして保存されている値を変更します。

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

D7からD8への構成のアップグレードモジュールでの構成の使用については、Drupal 8のドキュメントも参照してください。


1
私にとって、これは質問に対する正しい答えです。私は現在、Drupal 7からの移行を行っており、それが非常に役立ちました。
Geat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.