Kreiranje korisničkih Twig šablona za korisnički modul
Osnovna ideja u Drupalu 8 je da želite izbeći pravljenje HTML-a direktno u PHP kodu vašeg korisničkog modula. Želite da se to prebaci u Twig šablone. Da biste kreirali nove Twig šablone u vašem modulu, pratite sledeće korake.
Korak 1: Definišite hook_theme u .module fajlu
Kreirajte fajl [module].module ako već ne postoji i dodajte kod koji definiše svaki od vaših Twig šablona. Ključ svakog elementa u nizu je ono što će vam biti potrebno za pozivanje šablona kasnije. Ne koristite crticu u imenu fajla.
function test_twig_theme($existing, $type, $theme, $path) { return [ 'my_template' => [ 'variables' => ['test_var' => NULL], ], ]; }
Pogledajte dokumentaciju za hook_theme().
Korak 2: Pozivanje šablona
Na mestu gde vraćate render niz (iz kontrolerske metode, koja se poziva iz yml fajla vašeg rutera, ili bilo gde drugde), pozovite Twig šablon. Slede primer test modula koji se poziva iz routing yml fajla u modulu. (dodatne informacije za ovaj deo su potrebne)
/** * @file * Contains \Drupal\test_twig\Controller\TestTwigController. */ namespace Drupal\test_twig\Controller; use Drupal\Core\Controller\ControllerBase; class TestTwigController extends ControllerBase { public function content() { return [ '#theme' => 'my_template', '#test_var' => $this->t('Test Value'), ]; } }
Takođe možete koristiti render metod da konstrušete izlaz ako vam je potrebno da ovo koristite kao deo drugog procesa u vašem kodu:
$renderable = [ '#theme' => 'my_template', '#test_var' => 'test variable', ]; $rendered = \Drupal::service('renderer')->renderPlain($renderable);
Imajte na umu da je ovo osnovna implementacija bez keširanja. Dokumentacija Render API Overview sadrži dodatne informacije o tome kako dodati keširanje. Što se tiče keširanja - imena promenljivih se keširaju, pa ako ih promenite (na primer, sa „test_var“ u „my_var“), moraćete da obrišete keš.
Korak 3: Kreirajte Twig šablon
U vašem modulu, unutar foldera sa šablonima, kreirajte Twig šablon. Ime fajla treba da se poklapa sa onim što ste naveli u hook_theme() (zamena donjih crta crtama). U ovom slučaju, ime fajla će biti my-template.html.twig.
Evo fajla koji sam koristio za testiranje:
<p>Test twig šablon!</p> <p>test_var: {{ test_var }}</p>
Prednost ovog pristupa je što će fajl šablona definisan u vašem modulu biti korišćen ukoliko takav fajl još ne postoji u vašoj temi. Jednostavno stavite fajl u folder sa šablonima vaše teme, očistite keš (drush cache-rebuild), i sistem će koristiti taj fajl.
Fajl možete smestiti u bilo koji podfolder unutar teme sajta kako biste održali organizaciju.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.