重新定位Cake的默认布局文件夹

时间:2012-05-22 10:20:43

标签: cakephp path cakephp-1.2

我正在开发一个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");
    }

2 个答案:

答案 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"
} 
     

}