plantillas how array php drupal drupal-modules drupal-8

php - how - Pasar variables a twig usando hook_theme dentro de un módulo



twig include (1)

Encontrado el problema,

cambiando esto,

$hello_world_template = array( ''#theme'' => ''helloworld'', ''variables'' => [ ''param_1'' => ''hello world'', ''param_2'' => ''hello from another world'' ], );

a esto,

$hello_world_template = array( ''#theme'' => ''helloworld'', ''#param_1'' => $param_1, ''#param_2'' => $param_2 );

Ahora puedo ver las variables que estoy pasando.

Todavía estoy abierto para una mejor opción?

Estoy completamente consciente de cómo hacer esto en Drupal 7, así que explicaré lo que normalmente haría con Drupal 7.

Cuando hago un módulo personalizado, uso hook_theme mucho, ¡es muy poderoso y reutilizable!

/** * Implements hook_theme(). */ function MODULE_theme() { $themes = array(); $themes[''name_of_theme''] = array( ''path'' => drupal_get_path(''module'', ''module'') .''/templates'', ''template'' => ''NAME_OF_TEPLATE'', ''variables'' => array( ''param1'' => NULL, ''param2'' => NULL, ), ); return $themes; }

Entonces llamaría a este tema usando

theme(''name_of_theme'', array( ''param1'' => ''VALUEA'', ''param2'' => ''VALUEB'' ));

Esto luego devolvería html y estaría feliz.

Así que Drupal 8 está fuera de su alcance.

/** * Implements hook_theme(). */ function helloworld_theme() { $theme = []; $theme[''helloworld''] = [ ''variables'' => [ ''param_1'' => [], ''param_2'' => ''hello'', ] ]; return $theme; }

y dentro de mi controlador estoy usando

$hello_world_template = array( ''#theme'' => ''helloworld'', ''variables'' => [ ''param_1'' => ''hello world'', ''param_2'' => ''hello from another world'' ], ); $output = drupal_render($hello_world_template, array( ''variables'' => array( ''param_1'' => $param_1, ''param_2'' => $param_2, ) ) ); return [ ''#type'' => ''markup'', ''#markup'' => $output ];

Estoy obteniendo una salida de mi plantilla, sin embargo, de lo que no estoy seguro es de dónde pasar mis parámetros para que estén disponibles en mi plantilla (solo para señalar que mis variables están disponibles son simplemente nulas como se define en hook_theme)

También estoy abierto a la idea de que podría estar haciendo lo incorrecto y estoy abierto a una ruta alternativa si mi método no es la mejor práctica.