web-dev-qa-db-ja.com

Drupal 8 variable_get

Drupal 7にvariable_getを使用しているコードがあります。ここで、コードをDrupal 8.で記述します。つまり、読んでいました this しかし、それは私を助けませんでした。

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

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

またはこれ

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

いくつかの提案。

9
SakaSerbia

Drupal 7

 $data =  variable_get('test_content_types');

Drupal 8

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

"get"、 "set"、 "delete"の詳細については、次を参照してください- ステップ5:D7変数をD8の状態システムにアップグレードする方法

16
itsdarrylnorris

受け入れられた答えは答えの半分です。 marcvangendによると、変数テーブルに保存され、variable_set()およびvariable_get()を使用して保存および取得されたものについて、Drupal 8には2つのオプションがあります。最初は、darol100の回答に記載されていますが、 State API です。

2番目は 構成API であり、構成フォームがあるほとんどの場合に使用する必要があります。 minimum にモジュールの構成インストールファイルが必要です(例: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();

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

5
mlncn