我正在开发一个CakePHP 1.2应用程序,我无法控制/ app目录,并将我的视图文件夹重新定位到,例如/ path / to / mycomponent / views,并可以通过设置我的控制器来渲染我的视图默认视图路径
var $viewPath = "mycomponent/views";
我在/ path / to / mycomponent / views / layouts下有一些布局(包括basic.ctp)
有没有办法在特定布局中渲染我的视图?
从我的控制器调用这个给我一个页面找不到错误:
function index()
{
$this->autoLayout = true;
$this->pageTitle = 'Browse items';
$this->render("browse", "basic");
// also tried: $this->render("browse", "/path/to/mycomponent/views/layouts/basic.ctp");
}
答案 0 :(得分:1)
最后通过添加应用配置的viewPaths数组的路径来实现它。此代码在您的控制器构造函数或覆盖beforeFilter metod:
之前$config = Configure::getInstance();
$config->viewPaths[] = " /path/to/mycomponent/views/";
现在我可以指定以下内容:
$this->layout = 'basic';
我的控制器视图以basic.ctp
布局呈现。
答案 1 :(得分:0)
仅供进一步参考。 我相信cakePhp 2.x就是这样做的。
public function beforeRender(){ 父:: beforeRender();
$ this-> layout =' mylayout&#39 ;; }
将进入路径: /app/View/Layouts/mylayout.ctp
注意:强>
如果要修改某个控制器的视图路径,请在控制器类声明之前添加:
App :: build(数组('查看' =>' /文件夹/'));
class ExampleController扩展了AppController {...}
将示例控制器的所有渲染视图的路径设置为 / app / Views / Folder /
所以完整的例子是:
App :: build(数组('查看' =>' /文件夹/'));
class ExampleController扩展AppController {
public function beforeRender() { parent::beforeRender(); $this->layout = 'mylayout'; } public function index() { $this->render('Home'); //This will load view: "/app/Views/Folder/Home.ctp" //From layout: "/app/Views/Layouts/mylayout.ctp" }
}