Значение переменной не переходит в веточку в drupal 8

Я изучаю Drupal 8 и делаю пользовательский блок программно, а также использую веточку с ним. Я передаю две переменные ветке, но проблема в том, что только значение первой переменной отображается на странице, значение второй переменной не отображается. И если я изменю имя переменной первой переменной, которая также исчезнет с веб-страницы. Как решить эту проблему?

Код моей функции построения блоков

  public function build() {
$role = "";
$username = "";
$userId = 0;
$db = Database::getConnection();
$query = $db->select('user__roles', 'x')
->fields('x', array('roles_target_id','entity_id'))
->condition('x.roles_target_id', 'administrator', '=');
$data = $query->execute();

// Get all the results
$results = $data->fetchAll(\PDO::FETCH_OBJ);

// Iterate results
foreach ($results as $row) {
$role = $row->roles_target_id;
$userId = $row->entity_id;
}
$query2 = $db->select('users_field_data','u')
->fields('u',array('name'))
->condition('u.uid',$userId,'=');
$data2 = $query2->execute();

// Get all the results
$results2 = $data2->fetchAll(\PDO::FETCH_OBJ);

foreach($results2 as $r)
{
$username = $r->name;
}
return array(
'#title' => $username,
'#descriptions' => 'Websolutions Agency is the industry leading Drupal development agency in Croatia',
);
}

код моей ветки

 <h1> name: {{ title }} </h1>
<h2>{{ descriptions }}</h2>

код моего .module файла

 <?php
/**
* Implements hook_theme().
*/
function test_custom_theme() {
return array(
'test_custom_block' => array(
'variables' => array('title' => NULL, 'descriptions' => NULL),
'template' => 'block--test-custom',
),
);
}

0

Решение

Я изменил название #theme и шаблонов, чтобы начать с имени модуля. Пожалуйста, найдите ниже пример.

src/Plugin/Block/[yourblockname].php

public function build() {
return [
'#theme' => 'custom_blocks__front_apps',
'#app' => 'your value',
];
}

custom_blocks.module:

function custom_blocks_theme($existing, $type, $theme, $path) {
return [
'custom_blocks__front_apps' => [
'variables' => [
'app' => null
],
]
];
}

шаблоны / заказные-блоки — передний apps.html.twig

<p>Hello: {{ app }}</p>
<p>Base Label: {{ label }}</p>
0

Другие решения

В вашем block.php вы должны добавить тему, которую вы используете. Это определено в файле модуля.
Итак, ваш возвращаемый массив должен выглядеть так:

    return array(
'#theme' => 'test_custom_block'
'#title' => $username,
'#descriptions' => 'Websolutions Agency is the industry leading Drupal
development agency in Croatia',
);

потому что в модульном файле вы говорите это

'test_custom_block' => array(...)
0

Проверьте это, чтобы создать тему и использовать переменные в ветке

File location - module/custom/MODULENAME/MODULENAME.module
/**
* @file
* Twig template for render content
*/
function MODULENAME_theme($existing, $type, $theme, $path) {
return [
'theme_name_template' => [
'variables' => ['flag' => NULL],
],
];
}
To Use theme function use below code
return ['#theme' => 'theme_name_template', '#flag' => 1];
0
По вопросам рекламы [email protected]