errore passaggio array a template twig
Buongiorno,
sto procedendo con la realizzazione del mio carousel con drupal.
Alla fine ho fatto una query che mi leggo i dati da db dal controller, e li metto in un array
che passo al template. Facendo il drupal_set_message sul numero degli elementi presente nell'array, nel metodo del controller li vedo correttamente quelli caricati, però poi nel file del template mi da array vuoto perchè?
Ecco i vari pezzi di codici
metodo del controller:
public function provametodo() {
$form['form'] = $this->formBuilder()->getForm('Drupal\gestioneutenti\Form\UtentifilterForm');
$query = \Drupal::database()->select('taxonomy_term_field_data', 't');
$query->fields('t');
$query->condition('t.vid', "macrocategorie_geodati", '=');
$result = $query->execute();
$ckanurl="";
$vet=array();
if($result != null){
while ($riga = $result->fetchAssoc()) {
$vet[$riga["name"]]=$riga["name"];
}
}
drupal_set_message("Numero record trovati ".count($vet));
return ['#id' => "10" ,'#form' => $form, 'vettore' => $vet,'#theme' => 'contacts_show_page'];
}
funzione gestioneutenti_theme nel file nomemodulo.module
function gestioneutenti_theme()
{
$templates = array('contacts_show_page' => array('variables' => ['id' => NULL,'form' => NULL,'vettore' => NULL],'template' =>'contacts_show'));
return $templates;
}
codice file twig:
{% if users|length > 0 %}
<p>Elementi trovati</p>
{% endif %}
{% if users|length == 0 %}
<p>Elementi non trovati</p>
{% endif %}
{% for item in vettore %}
<p>{{ item.name|e }}</p>
{% else %}
<p><em>no user found</em></p>
{% endfor %}
Mi stampa elementi non trovati, quando nel controller con drupal_set_message ho il corretto numero di elementi...
Risposte
Prova vettore|length al posto
Prova vettore|length al posto di users|length in twig.
risolto il problema, non
risolto il problema, non mettevo il carattere # quando passavo la variabile dal controller
Potresti ripostare l'intero
Potresti ripostare l'intero codice corretto così da aiutare anche qualcun altro con lo stesso problema?
public function provametodo()
public function provametodo() {
$form['form'] = $this->formBuilder()->getForm('Drupal\gestioneutenti\Form\UtentifilterForm');
$query = \Drupal::database()->select('taxonomy_term_field_data', 't');
$query->fields('t');
$query->condition('t.vid', "nometermini", '=');
$result = $query->execute();
$ckanurl="";
$vet=array();
if($result != null){
while ($riga = $result->fetchAssoc()) {
$vet[$riga["name"]]=$riga["name"];
}
}
//drupal_set_message("Numero record trovati ".count($vet));
return ['#id' => "10" ,'#form' => $form, '#vettore' => $vet,'#theme' => 'contacts_show_page'];
}
praticamente non mettevo il # davanti il nome delle variabili nel return