2016-09-20 71 views
0

路由文件我是一個Drupal 7普通用戶,但是這是我第一次使用Drupal 8Drupal的8 - 在主題

我想在我的主題定義自定義路線,但似乎我的不考慮路由文件。這裏是我的主題相關的文件:

foo/ 
    src/ 
    Controller/ 
     TestController.php 
    templates/ 
    test/ 
     list.html.twig 
    foo.routing.yml 

隨着foo.routing.yml

foo.test: 
    path: '/test-url' 
    defaults: 
    _controller: '\Drupal\foo\Controller\TestController::list' 
    _title: 'D8 routing test page' 
    requirements: 
    _permission: 'access content' 

而且TestController.php

<?php 

namespace Drupal\foo\Controller; 

use Drupal\Core\Controller\ControllerBase; 

class TestController extends ControllerBase 
{ 

    public function list() { 
     return array(
      '#theme' => 'test/list.html.twig', 
      '#bar' => 'Variable transmission test' 
     ); 
    } 

} 

目前的結果,當我打電話/test-url是不是我的模板,但標準的節點頁面,顯示所有字段。
我錯過了什麼讓它工作?

回答

1

你應該渲染陣列中使用的主題名稱,而不是模板路徑:

public function list() { 
    return array(
     '#theme' => 'list', 
     '#bar' => 'Variable transmission test' 
    ); 
} 

此外,在默認情況下,Drupal沒有有「名單」的主題,所以你需要將它定義到(以您的foo.theme文件):

function foo_theme($existing, $type, $theme, $path) { 
    return array(
    'list' => array(
     'variables' => array(
     'bar' => NULL 
    ) 
    ) 
); 

UPD:@zessx此外:路由聲明可以在模塊中實現,而不是在主題中實現。

+1

這是我的問題的一部分。另一部分是你不能在主題中定義路線。只在一個模塊中。 – zessx

+0

謝謝,更新了答案 –