web-dev-qa-db-fra.com

Drupal 8 variable_get

J'ai du code dans Drupal 7 ce qui utilise variable_get. Maintenant, je voudrais écrire le code dans Drupal 8. Donc je lisais ceci mais cela ne m'a pas beaucoup aidé.

Comment écrire ce code dans Drupal 8 à partir du code dans Drupal 7?

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

ou ca

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

Une suggestion.

9
SakaSerbia

Dans Drupal 7

 $data =  variable_get('test_content_types');

Dans Drupal 8

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

Pour plus d'informations sur "get", "set", "delete" visitez - Étape 5: Comment mettre à niveau les variables D7 vers le système d'état de D8 .

16
itsdarrylnorris

La réponse acceptée est la moitié de la réponse. Comme le note marcvangend, il existe deux options dans Drupal 8 pour ce qui était auparavant stocké dans la table des variables et a été stocké et récupéré avec variable_set() et variable_get(). Le premier, documenté dans la réponse de darol100, est le State API .

Le second est Configuration API et doit être utilisé dans la plupart des cas où vous avez un formulaire de configuration. Il nécessite à minimum dans votre module un fichier d'installation de configuration, par exemple config/install/example.settings.yml. Pour une seule configuration (avec plusieurs valeurs potentielles), ce fichier pourrait simplement contenir par exemple:

test_content_types: - article

Et puis utilisez la valeur avec:

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

Ou modifiez les valeurs enregistrées avec:

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

Voir aussi la documentation Drupal 8 pour Mises à niveau de configuration D7 à D8 et en utilisant la configuration dans les modules .

5
mlncn