自定义页面Drupal 8的模板

时间:2016-07-09 16:46:04

标签: templates drupal drupal-8

我的模块中的自定义页面模板有问题。 我使用hook_theme()来定义我的twig文件。当我签入hook_theme_registry_alter()时,我会看到我的新模板文件,但是当我尝试使用它时,它无效。

我的代码:

file:first.module

/**
 * Implement hook_theme().
 */
function first_theme($existing, $type, $theme, $path) {
  return array(
    'testtwig' => array(
      'template' => 'testtwig',
      'variables' => array('test_var' => NULL),
    ),
  );
}

控制器:

/**
 * @file
 * Contains \Drupal\first\Controller\FirstController.
 */

namespace Drupal\first\Controller;

use Drupal\Core\Controller\ControllerBase;

class FirstController extends ControllerBase {

  public function content() {
    return array(
        '#theme' => 'testtwig',
        '#test_var' => t('sss'), //$output,
      );
  }
}

错误:

  

模板“modules / custom / first / templates / testtwig.html.twig”不是   已定义(Drupal \ Core \ Template \ Loader \ ThemeRegistryLoader:无法使用   在中查找模板“modules / custom / first / templates / testtwig.html.twig”   Drupal主题注册表。)。

1 个答案:

答案 0 :(得分:0)

//。module文件

 <?php

    /**
     * Implements hook_theme().
     */
    function MODULE_theme($existing, $type, $theme, $path) {
        return [
            'site_framework_display' => [
                'variables' => ['test_var' => NULL],
                'template'  => 'page--site-framework',
            ],
        ];
    }

//控制器

<?php

namespace Drupal\MODULE\Controller;

use Drupal\Core\Controller\ControllerBase;

class MODULEController extends ControllerBase {

    public function getVersion() {

        return [
            '#theme' => 'site_framework_display',
            //'#test_var' => \DRUPAL::VERSION,
            '#test_var' => 'hello guys'
        ];

    }
}