2012-05-22 126 views
1

我正在CakePHP 1.2應用程序中工作,我無法控制/ app目錄,並將我的視圖文件夾重定位到/ my/path/to/mycomponent/views,並且可以呈現我的意見通過設置我的控制器的默認視圖路徑Relocating Cake的默認佈局文件夾

var $viewPath = "mycomponent/views"; 

我在/ path一些佈局(包括basic.ctp)/到/ myComponent的/視圖/佈局

有沒有辦法來渲染我裏面的觀點具體佈局?

從我的控制器調用這給了我一個找不到網頁錯誤:

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"); 
    } 

回答

1

終於得到它通過嚮應用程序配置的viewPaths陣列的路徑工作。此代碼放在你的控制器構造或覆蓋beforeFilter梅託德:

$config = Configure::getInstance(); 
$config->viewPaths[] = " /path/to/mycomponent/views/"; 

現在就可以指定以下內容:

$this->layout = 'basic'; 

而且我的控制器的觀點呈現在basic.ctp佈局。

0

只是爲了進一步的參考。 我相信cakePhp 2.x是這樣做的。

public function beforeRender() { parent::beforeRender();
$this->layout = 'mylayout'; }

它會去的路徑:/app/View/Layouts/mylayout.ctp

注:

如果你想修改一些控制器視圖路徑,在控制器類聲明之前添加:

App::build(array('View' => '/Folder/'));

class ExampleController extends AppController{...}

這將設置所有路徑對於實施例控制器/應用/查看/文件夾/ ndered視圖

所以完整的例子將是:

App::build(array('View' => '/Folder/'));

class ExampleController extends 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" 
} 

}