ich voll und ganz bewusst bin, wie diese 7 in Drupal zu tun, so werde ich erklären, was ich normalerweise Drupal tun mit 7.Passing Variablen innerhalb eines Moduls mit hook_theme Zweig
Wenn ein benutzerdefiniertes Modul macht ich hook_theme verwenden, um eine viel, es ist sehr mächtig und wiederverwendbar!
/**
* 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;
}
dann würde ich dieses Thema nennen
theme('name_of_theme', array(
'param1' => 'VALUEA',
'param2' => 'VALUEB'
));
glücklich Dies würde dann wieder html und ich wäre mit.
Also Drupal 8 ist out müssen sich damit beschäftigen.
/**
* Implements hook_theme().
*/
function helloworld_theme() {
$theme = [];
$theme['helloworld'] = [
'variables' => [
'param_1' => [],
'param_2' => 'hello',
]
];
return $theme;
}
und in meinem Controller Ich bin mit
$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
];
ich eine Ausgabe auf meiner Vorlage bin immer, aber was Im nicht sicher ist, wo meine Parameter zu übergeben, damit sie verfügbar sind in meiner Vorlage (nur um darauf hinzuweisen, dass meine Variablen verfügbar sind, sind sie nur null, wie in hook_theme definiert)
Ich bin auch offen für die Idee, dass ich das grundlegend falsch machen könnte und ich bin offen für eine Alternative Route, wenn meine Methode nicht Best Practice ist.
BTW. Sie sollten '\ Drupal :: service ('renderer') -> renderRoot()' anstelle von veraltetem 'drupal_render()' verwenden. – kenorb