创建一个php函数以添加新节点

时间:2020-10-10 14:50:39

标签: drupal

我是Drupal 8的新手,我的问题是: 有没有办法在 .theme 文件中创建php函数并从树枝模板文件中调用它?

1 个答案:

答案 0 :(得分:1)

一种方法是在.theme文件中使用全局预处理。

function MYTHEME_preprocess(array &$variables, $hook) {
  //this is a global hook, its variables are available in any template file
  $variables['test'] = 'today';
}

{{ test }}将呈现“今天”。

另一种方法是在自定义模块中创建自己的自定义Twig函数。 参考-https://drupal.stackexchange.com/questions/271770/how-to-call-a-function-in-a-twig-file

可以在树枝模板{{ getRoleValues('admin') }}上这样调用 src / MyTwigExtension.php

<?php

namespace Drupal\MyTwigModule;

/**
 * Class DefaultService.
 *
 * @package Drupal\MyTwigModule
 */
class MyTwigExtension extends \Twig_Extension {

  /**
   * {@inheritdoc}
   * This function must return the name of the extension. It must be unique.
   */
  public function getName() {
    return 'role_values';
  }

  /**
   * In this function we can declare the extension function
   */
  public function getFunctions() {
    return array(
       new \Twig_SimpleFunction('getRoleValues',
        [$this, 'getRoleValues'],
        ['is_safe' => ['html']]
      )),
  }

  
   /**
   * Twig extension function.
   */
  public function getRoleValues($roles) {
    $value = 'not-verified';
    if ($roles == "admin") {
      $value = 'verified';
    }

    return $value;
  }

}

src / MyTwigModule.services.yml

services:
  MyTwigModule.twig.MyTwigExtension:
    class: Drupal\MyTwigModule\MyTwigExtension
    tags:
      - { name: twig.extension }