2016-06-21 3 views
0

Я предположил, что это будет легко, но я в тупике.Передача параметра из типа содержимого в модуль

У меня есть собственный тип контента, который включает в себя поле id. Я создаю их с помощью базового шаблона страницы.

Я написал небольшой модуль, который создает блок, который заполняется данными из внешнего API. Все работает, но я не могу понять, как передать значение id из содержимого данной страницы в мой модуль, чтобы он мог вызвать вызов API.

Это будет пара строк кода в прямом php, это не может быть так сложно в Drupal 8 и веточке, не так ли?

ответ

0

Я думаю, вы можете достичь того, что хотите, с помощью HOOK_preprocess.

использование:

YOUR_MODULE_preprocess_node(&$variables){ ... } or 
YOUR_MODULE_preprocess_block(&$variables){ ... } 

, чтобы получить доступ к переменной из типа контента и передать его в шаблон функции Одер.

+0

Есть примеры? Единственные, с которыми я могу найти переменные pass от модуля обратно к шаблону. Сначала мне нужно передать это в другую сторону. – raf

1

мне удалось найти решение here

Я повторно отправляю это в случае полезно кому-либо еще.

Если вы создаете пользовательский блок можно обращаться к полям содержимого с помощью системы маршрутизации внутри вашей функции сборки блока, как это:

public function build() { 

    if ($node = \Drupal::routeMatch()->getParameter('node')) { 
     $field_my_custom_value = $node->field_my_custom_value->value; 
    } 

    //do something with the variable, like make the API call 

    //Make sure to set the cache to the context or even to zero if you need 
    return array(
     '#markup' => $this->t('my content to render'), 
     '#cache' => array(
     'contexts' => ['contexts' => ['route']], 
    ), 
    ); 
}