设置后如何使模板无效?

时间:2017-11-29 19:51:38

标签: php phalcon

问题

请告诉我如何在Phalcon 3上使用setTemplateAfter方法设置时使模板无效,以免引用模板。

概述

当前配置由IndexController ControllerBase扩展。

在ControllerBase的initialize方法中,使用setTemplateAfter设置模板,如下所示。

$this->view->setTemplateAfter('common');

在扩展的IndexController中,由于不需要模板,因此虽然执行了以下操作但仍会发生错误。

$this->view->setTemplateAfter('');

*我想我不想尽可能多地更改为ControllerBase,因为该模板是由另一个控制器使用的。

错误消息

View 'layouts/' was not found in any of the views directory
#0 [internal function]: Phalcon\Mvc\View->_engineRender(Array, 'layouts/', false, true, NULL)
#1 [internal function]: Phalcon\Mvc\View->render('index', 'index')
#2 /mnt/raid/serverapps/www/lashca/public/index.php(42): Phalcon\Mvc\Application->handle()
#3 {main}

源代码

控制器/ ControllerBase.php

<?php
use Phalcon\Mvc\Controller;
class ControllerBase extends Controller
{
    public function initialize()
    {
        $this->view->setTemplateAfter('common');
    }
}

控制器/ IndexController.php

<?php
use Phalcon\Mvc\Controller;
class IndexController extends ControllerBase
{
    public function indexAction()
    {
        $this->view->setTemplateAfter('');
    }
}

环境

  • CentOS 7.4(x64)
  • Apache 2.4.6
  • PHP 7.0.26
  • Phalcon Framework 3.2.4
  • MySQL Ver 14.14 Distrib 5.6.38

1 个答案:

答案 0 :(得分:1)

您可以通过$this->view->disable()禁用某些级别的视图呈现。

例如,如果你想在&#34; -rendering之后禁用&#34;模板,你可以这样做:

$this->view->disableLevel([
    View::LEVEL_AFTER_TEMPLATE  => true
]);

如果要禁用其他级别的视图,请检查documentation