Drupal 8,hook_preprocess_ page by route

时间:2017-03-23 12:27:41

标签: drupal-8

我在Drupal的8.2 my_module.module 文件中有以下代码。


    /**
     * Implements hook_preprocess_page().
     *
     */
    function my_module_preprocess_page(&$variables) {
        if( \Drupal::routeMatch()->getRouteName() == my.route )
            doSomething();
    }


    function doSomething(){
        //code here
    }

我的目的是在用户请求 my.route 时运行一些代码

Drupal有这样的功能吗?


    function my_route_preprocess_page(&$variables) {
         //code here
    }

提前致谢。

2 个答案:

答案 0 :(得分:0)

没有drupal没有这样的预处理功能。

实际上你使用的钩子不是hook_preprocess_page()而是hook_preprocess_HOOK(),它不仅可以用于页面,所以它对路径一无所知。请参阅hook_preprocess_HOOK() api

答案 1 :(得分:0)

不,Drupal 8没有你想要的功能(预处理路线),因为主题预处理的想法是预处理你的树枝上可用的变量并预处理路线真的没有& #39;没有意义。

因此,您可以像开始一样关注,预处理页面,阻止,查看或等等通过您的路线进行验证。

function theme_preprocess_page(&$variables) {
    $current_route = \Drupal::routeMatch();
    $route_name = $current_route->getRouteName();

    else if($route_name == 'myroute.hook') {
       //your logic here
    }
}

您可以在Drupal doc上了解有关Drupal 8的可用主题预处理的更多信息:theme.inc