Значение переменной не переходит в веточку в drupal 8 - PullRequest
0 голосов
/ 12 октября 2018

Я изучаю 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',
    ),
);
}

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

В вашем 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 голосов
/ 17 октября 2018

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

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 голосов
/ 16 октября 2018

Я изменил название #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
      ],
    ]
  ];
}

шаблоны / пользовательские блоки - front-apps.html.twig

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