1

私はついにプロジェクトのために Drupal 8 に飛び込みました。私のモジュールでは、ルートに基づいてモジュールからテンプレートをレンダリングする方法を特定できないようです。

Drupal 7 では、通常これを行います。

custom.module

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

custom:
    path: /home
    defaults: 
        _controller: Drupal\custom\Controller\CustomController::custom
    requirements:
        _permission: 'access content'

src/Controller/CustomController.php

namespace Drupal\custom\Controller;

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

そして、すべてがルートに到達するのに最適です。しかし、hook_menu がコールバックとして使用するための hook_theme 関数の作成を理解できないようです。

4

1 に答える 1

1

理解した

custom.moduleを追加

function custom_theme() {
    $theme['home_page'] = [
        'variables' => ['name' => NULL],
        'template' => 'home_page'
    ];

    return $theme;
}

私のコントローラーでは、「#markup」を次のように置き換えました。

'#theme' => 'home_page'
于 2016-11-11T22:16:31.920 に答える