首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Drupal 8 hook_menu()呈现hook_theme()

Drupal 8 hook_menu()呈现hook_theme()
EN

Stack Overflow用户
提问于 2016-11-11 21:16:37
回答 1查看 656关注 0票数 1

我终于投入到Drupal 8的一个项目。但是,在我的模块中,我似乎无法确定如何根据路由从模块中呈现模板。

在Drupal 7中,我通常会这样做

custom.module

代码语言:javascript
运行
复制
function union_views_menu() {
    $items = array();

    $items['home'] = array(
        'title' => 'Home',
        'description' => 'home apge',
        'page callback' => 'home_page',
        'access arguments' => array( 'access content'),
        'type' => MENU_CALLBACK
    );
    return $items;
}

function home_page() {
    return theme('home_page');
}

function union_views_theme(){
    return array(
        'home_page'     => array(
            'template'  => 'templates/home-page'
        )
  );
}

然后,我将在模板文件夹中有一个模板

我和Drupal 8在这里谈过:

custom.routing.yml

代码语言:javascript
运行
复制
custom:
    path: /home
    defaults: 
        _controller: Drupal\custom\Controller\CustomController::custom
    requirements:
        _permission: 'access content'

src/Controller/CustomController.php

代码语言:javascript
运行
复制
namespace Drupal\custom\Controller;

class CustomController {
    public function custom(){
        return array(
            '#title' => 'Custom Theme',
            '#markup' => 'This is a content.'
        );
    }
}

所有的工作都对到达路线很有帮助。但是,我似乎想不出如何创建一个hook_theme函数,以供hook_menu作为回调使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 22:16:31

弄明白了

添加custom.module

代码语言:javascript
运行
复制
function custom_theme() {
    $theme['home_page'] = [
        'variables' => ['name' => NULL],
        'template' => 'home_page'
    ];

    return $theme;
}

在我的控制器中,将'#markup'替换为:

代码语言:javascript
运行
复制
'#theme' => 'home_page'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40556342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档