Drupal 8 variabile_get


9

Ho un po 'di codice in Drupal 7 che usano variabile_get. Ora vorrei scrivere il codice in Drupal 8. Quindi stavo leggendo questo, ma non mi ha aiutato molto.

Come scrivere questo codice in Drupal 8 dal codice in Drupal 7?

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

o questo

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

Qualche suggerimento.

Risposte:


16

In Drupal 7

 $data =  variable_get('test_content_types');

In Drupal 8

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

Per ulteriori informazioni su "get", "set", "delete" visita - Passaggio 5: come aggiornare le variabili D7 al sistema a stati D8 .


Grazie @ darol100 .. Il link è carino .. Ora capisco. Quindi posso scrivere $ data = \ Drupal :: state () -> get ('test_content_types', array ());
SakaSerbia,

7
Tenere presente che in D8 esiste una differenza tra stato e configurazione. Come notato su drupal.org/developing/api/8/configuration : "La configurazione è un luogo in cui archiviare le informazioni che si desidera sincronizzare dallo sviluppo alla produzione. Queste informazioni vengono spesso create durante la creazione del sito e non sono in genere generate da utenti regolari durante il normale funzionamento del sito. Utilizzare l'API di stato, non la configurazione, per archiviare le variabili locali che non dovrebbero spostarsi tra le istanze. Utilizzare lo stato per i valori di sistema nascosti e se non si desidera mai distribuirlo tra ambienti. "
marcvangend,

5

La risposta accettata è metà della risposta. Come nota marcvangend, in Drupal 8 ci sono due opzioni per ciò che era memorizzato nella tabella delle variabili ed è stato archiviato e recuperato con variable_set()e variable_get(). Il primo, documentato nella risposta di darol100, è l' API di stato .

Il secondo è l' API di configurazione e dovrebbe essere utilizzato nella maggior parte dei casi in cui si dispone di un modulo di configurazione. Richiede almeno nel tuo modulo un file di installazione della configurazione, ad esempio config/install/example.settings.yml. Per un singolo pezzo di configurazione (con più valori potenziali), quel file potrebbe contenere ad esempio:

test_content_types: - article

E quindi usa il valore con:

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

Oppure modifica i valori memorizzati con:

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

Vedi anche la documentazione di Drupal 8 per gli aggiornamenti di configurazione da D7 a D8 e l' utilizzo della configurazione nei moduli .


1
Per me, questa è la risposta corretta alla domanda. Attualmente sto effettuando la transizione da Drupal 7 e mi ha aiutato molto.
Geat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.