如果我的整个网站使用apps / view / layouts / default.ctp中指定的default.ctp布局,如何仅更改主页布局以使用homepage.ctp并使用默认设置保留网站的其余部分。 CTP?
答案 0 :(得分:14)
将/cake/libs/controller/pages_controller.php
复制到/app/controller/
目录中,然后执行以下任一操作:
display()
的末尾添加一行,以便在请求'home'时切换布局:if ($page == 'home') $this->layout = 'homepage';
home()
方法(或者您喜欢的名称),在其中设置$this->layout
并在/
中重新路由/app/config/routes.php
路由以使用此新方法。 修改强>
总之,您需要一些自定义方法,您可以在其中设置$this->layout = 'homepage'
,这就是全部。您可以随时在任何控制器中执行此操作,重用PagesController
只是在Cake中执行此操作的最方便和最常用的方法。
答案 1 :(得分:1)
上述答案现已过时,但提供了正确的方法。
在现代版本的CakePHP中,他要求你制作的控制器已经存在并且是:
/app/Controller/PagesController.php
我有一个名为“logoff”的模板,并在$this->render()
命令(大约第73行)之前添加了如下内容。
$this->layout = 'loggedoff';
答案 2 :(得分:0)
这很好用:
class RegistrationsController extends AppController {
public $helpers = array('Html', 'Form', 'Time');
public $components = array('Session');
public function login() {
$this->layout = 'empty';
}
}
只需在控制器功能中设置所需的布局即可。