Drupal 8 - шаблон Twig не будет получать значения переменных - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать шаблон ветки для получения переменной из пользовательского блока, когда я делаю {{ dumb() }}, он показывает мне переменные и их значения, но когда я вызываю переменную, он не показывает это,даже когда я вызываю переменную с немым {{ dumb(title) }}, он говорит мне, что это NULL.Может ли кто-нибудь помочь мне понять, в чем ошибка?

Блок : onyx_experiencia.php

/**
 * Provides a 'Test' Block.
 *
 * @Block(
 *   id = "onyx_experiencia",
 *   admin_label = @Translation("Servicios OnyxGroup"),
 *   category = @Translation("Servicios OnyxGroup"),
 * )
 */
class onyx_experiencia extends BlockBase implements BlockPluginInterface {

 /**
   * {@inheritdoc}
   */  
  public function build() {
      $title = 'TestTitle34';
      $desc = 'Test text 24';
      $test_array = array(
            '#title' => $title,
            '#description' => $desc
        );

      return $test_array;

  }

block.module : onyx_experiencia.module

<?php
/**
 * Implements hook_theme().
 */
function onyx_experiencia_theme($existing, $type, $theme, $path) {

    return array(
        'block__serviciosonyxgroup' => array(
            'template' => 'block--serviciosonyxgroup',
            'render element' => 'elements',
            'variables' => array(
                'title' => 'TitleTest',
                'description' => 'DescriptionTest'
            ),
        ),
    );
}

Twig File : block - serviciosonyxgroup.html.twig

{#
/**
 * @file
 * Profile for onyx_experiencia block.
 */
#}

<h3>Featured Events</h3>
<p>Test: {{ title }} </p>
<p>Test: {{ description }} </p>

<ol>
  {% for key, value in _context  %}
    <li>{{ key }}</li>
  {% endfor %}
</ol>

{{ dump(content) }}

Результат : Это результат, который я получаю enter image description here

ОБНОВЛЕНИЕ Другой способ все еще не работает

enter image description here

1 Ответ

0 голосов
/ 01 мая 2019

Как видно на скриншоте:

Переменные находятся в переменной content, а не в _context
Ваш текущий шаблонный код предполагает, что они в реальном времени _context, хотя они не имеют префикса с чем-либо.

{{ title }} равно <?= isset($_context['title']) ? $_context['title'] : null; ?>

Так что вам нужно изменить шаблон на что-то вроде

<h3>Featured Events</h3>
<p>Test: {{ content['#title'] }} </p>
<p>Test: {{ content['#description'] }} </p>
...