Twig parameter átadás nem működik

pero képe

Sziasztok!

Hosszú órák óta kínlódik pár sor kóddal

mymodule.module:

  1. function mymodule_theme($existing, $type, $theme, $path) {
  2. return [
  3. 'my_template' => [
  4. 'variables' => ['teszt_var' => NULL],
  5. ],
  6. ];
  7. }

src/Controller/ArchiveController.php:

  1. namespace Drupal\mymodule\Controller;
  2. use Drupal\Core\Controller\ControllerBase;
  3. class ArchiveController extends ControllerBase{
  4.  
  5. public function archive() {
  6. return array(
  7. '#theme' => 'my_template',
  8. '#teszt_var' => $this->t('Something'),
  9. );
  10. }
  11. }

theme_dir/templates/my-template.html.twig:

  1. <p>Test twig template!</p>
  2. <p>test_var: {{ teszt_var }}</p>

Maga a template megjelenik, de a "teszt_var" változó üres.
Mi lehet a gond?

Köszönöm!

Drupal verzió: 
Balu Ertl képe

Az archive() metódus hol hívódik meg?

0
0
pero képe

A mymodule.routing.yml-ben:

  1. mymodule.archive:
  2. path: /archive
  3. defaults:
  4. _controller: Drupal\mymodule\Controller\ArchiveController::archive
  5. requirements:
  6. _permission: 'access content'
  7. options:
  8. no_cache: 'TRUE'

Köszi!

0
0
junkuncz képe

Valszeg az a lesz a hiba, hogy a témádban akarod használni magát a template fájlt, viszont a modulodban definiálod.
Vagy átrakod a theme() implementációt a témádba és menni fog, vagy a jelenlegi implementációt kiegészíted egy "path" és egy "template" tömbkulccsal, ami a témádban lévő fájlra mutat:

  1. function mymodule_theme($existing, $type, $theme, $path) {
  2. return [
  3. 'my_template' => [
  4. 'variables' => ['teszt_var' => NULL],
  5. 'path' => drupal_get_path('theme', 'theme_dir') . '/templates',
  6. 'template' => 'my_template',
  7. ],
  8. ];
  9. }

Remélem tudtam segíteni!

Üdv,
Bálint

1
0
pero képe

Köszönöm szépen! Az első bejött, átraktam a .theme fájlba és jó lett.

2
0