Home page - custom module
Per la pagina iniziale del sito ho utilizzato un modulo. Ho seguito l'esempio della realizzazione pagina Hello World.
Mi interessa sapere se la procedura che ho seguito per la creazione della pagina. è giusta
Ho del dubbi.
In una variabile ($VarPag) inserisco il codice html e lo assegno ad un campo
$VarPag = "<h1> Gestione </h1>" . "</div>" . "<hr />" .*/ "<div class='home-sx'>" . "<p><b> Bentornato </b></p>" . "<p>" .$UtenteAna. "</p>" . "<p><b> Ruoli </b></p>" . foreach ($ruoli as &$valore) { $valore ; } "</div>" ; $Pag['testo_1'] = [ '#type' => 'markup', '#markup' => $VarPag . $VarPag_1, ]; return $Pag;
All'interno del codice devo inserire il comando foreach e non sono riuscito a farlo eseguire. Per le variabili non ho avuto problemi.
Se il metodo per la creazione della pagina è giusto, come faccio ad integrare il comando?
Gaetano
Risposte
Ciao, faccio una premessa: in
Ciao, faccio una premessa: in sè questa è una richiesta che riguarda PHP in generale e non specificamente Drupal. Non è possibile usare foreach con un operatore di concatenazione tra stringhe. Per questo ti rimando alla doc ufficiale:
https://www.php.net/manual/en/control-structures.foreach.php
https://www.php.net/manual/en/language.operators.string.php
Per non segnalare la richiesta off topic, cerco di portarla nel contesto Drupal, in cui ci sono almeno due cose da considerare:
1. il caching: se hai delle variabili che dipendono da un contesto (in questo caso l'utente), il tuo render array deve far capire al sistema che dipende da tale contesto. Non è un argomento immediato, ti consiglio una lettura più approfondita: https://www.drupal.org/docs/8/api/render-api/cacheability-of-render-arra...
2. separazione della presentazione (View) dal modello/controller (Model/Controller): nel tuo controller dovresti interagire con il modello (ad esempio con l'entità User) e rendere disponibili i dati alla presentazione (Twig). Un'idea può essere implementare un funzione di theming con relativo template e passare ad esso i dati.
in pratica, nel file .module:
<?php
function miomodulo_page_theme() {
return [
'miocomponente' => [
'variables' => [
'componentevar1' => '',
'componentevar2' => [],
]
]
];
}
?>
nel controller:
<?php
...
public function mioMetodo() {
$componentevar1 = 'CIAO MONDO!';
$componentevar2 = ['uno', 'due', 'tre'];
// nota: aggiungere #cache al render array se necessario
return [
'#theme' => 'miocomponente',
'#componentevar1' => $componentevar1,
'#componentevar2' => $componentevar2,
];
}
...
?>
nel file templates/miocomponente.html.twig (da creare dentro la directory del modulo custom):
<h1>{{ componentevar1 }}</h1>
<ul>
{% for elemento in componentevar2 %}
<li>{{ elemento }}</li>
{% endfor %}
</ul>
Spero ti sia utile.
Chiedo scusa a tutti e
Chiedo scusa a tutti e soprattutto a te. Non era mia intenzione fare ciò. Devo capire ancora bene come interagire con la struttura di drupal e spesso faccio confusione tra il linguaggio e come si integra in drupal.
Grazie per i link
Ma figurati, anzi spero sia
Ma figurati, anzi spero sia stato utile per approfondire.