1

有没有办法改变 cake 2.3.5 中的自动渲染视图,但要覆盖某些东西或方法名称约定?

我想在主控制器目录的子文件夹中呈现视图,这是一个示例:

class AdministrationController extends AppController {

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

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

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

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

4

1 回答 1

1

是的

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

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

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

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

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

管理控制器不正常

在问题中有Administration,productsindex- 所有正常的事情,但是拥有管理控制器是不正常的。使用这种控制器结构,管理控制器将变得巨大。

执行此操作的正常方法是使用管理路由并定义管理索引:

class ProductsController extends AppController {

    function admin_index() {
         //
    }
}
于 2013-07-27T15:55:29.300 回答