CakePHP This-> render不加载控制器

时间:2012-12-04 15:02:13

标签: cakephp

我在很多地方都使用过几个视图。视图是相同的但控制器不是,所以我将.ctp文件放在Elements目录中,并在不同的控制器中使用以下代码。

$this->render('/Elements/overview'); 

但是,我每次加载视图时都需要执行一些PHP代码。 所以我想在Contollers目录中创建一个控制器,命名为Elements目录(overviewController.php)中的视图,但不幸的是,该控制器中的代码没有被执行。

有没有办法做到这一点,还是我完全错了?

编辑:确定使用Dave的建议我将overview.ctp文件复制到名为Global的新目录。将控制器重命名为GlobalController.php,将类重命名为GlobalController并更改$ this-> render。但是,视图已加载,我用于渲染视图的控制器已加载,但GlobalController不是。

1 个答案:

答案 0 :(得分:1)

在整个视图中使用元素是不正常的。最好使用实际的视图文件。元素是使用WITHIN Views的较小代码块。

示例:

创建一个'OverviewsController.php'(注意它是PluralController.php)。在其中,创建一个函数:

public function overview() {

}

要访问该功能,请使用网址:www.yourdomain.com/overviews/overview

它的视图文件应该在Views/Overviews/overview.ctp

如果您计划在许多地方使用该元素,则可以在视图中包含该元素。

修改

您发布的代码没有任何问题,但您不需要渲染元素 - 只需渲染视图:

public function anything() {
    $this->render('/Overviews/overview');
}