更改控制器的自动渲染

时间:2013-07-27 15:02:42

标签: php cakephp

有没有办法改变蛋糕2.3.5中的自动浏览器视图,但要覆盖某些内容或方法名称约定?

我想在主Controller目录的子文件夹中渲染视图,这是一个例子:

class AdministrationController extends AppController {

    public function products(){ 
        $this->render('/Administration/products/index');
    }
}

我宁愿将视图存储在有组织的子文件夹中,如下所示:

- Administration
  - products
    - index.ctp
    - edit.ctp

我的问题是:有没有办法重做这个,这样我就不必在每个动作中都使用$this->render()

1 个答案:

答案 0 :(得分:1)

使用相对于相应视图文件夹的路径调用render:

$this->render('products/index')

或使用“绝对”路径调用,该路径被理解为相对于视图文件夹:

$this->render('/Administration/products/index');

这两个调用都将呈现视图文件app/View/Administration/products/index。如果您想构建这样的视图文件 - 您可以在每个操作中调用render或操纵viewPath变量以指向它所需的位置(在类中或在beforeFilter中)。

管理控制器不正常

在问题中有Administrationproductsindex - 所有正常的事情,但是正常有管理员控制器。使用这种控制器结构,管理控制器将变得庞大。

通常的方法是使用admin routing并定义管理员索引:

class ProductsController extends AppController {

    function admin_index() {
         //
    }
}