在cakephp中仅更改主页布局
如果我的整个网站使用apps/view/layouts/default.ctp中指定的default.ctp布局,如何仅将主页布局更改为使用homepage.ctp,并使用default.ctp保留网站的其余部分?将在cakephp中仅更改主页布局,php,cakephp,layout,Php,Cakephp,Layout,如果我的整个网站使用apps/view/layouts/default.ctp中指定的default.ctp布局,如何仅将主页布局更改为使用homepage.ctp,并使用default.ctp保留网站的其余部分?将/cake/libs/controller/pages\u controller.php复制到/app/controller/目录中,然后执行以下任一操作: 在display()的末尾添加一行,以便在请求“home”时切换布局: if($page='home')$this->lay
/cake/libs/controller/pages\u controller.php
复制到/app/controller/
目录中,然后执行以下任一操作:
- 在
的末尾添加一行,以便在请求“home”时切换布局:display()
if($page='home')$this->layout='homepage'代码>
- 创建一个
方法(或随意命名),在该方法中设置home()
,并在$this->layout
中重新路由/app/config/routes.php
以使用此新方法/
总之,您需要一些自定义方法,在其中设置
$this->layout='homepage'
,仅此而已。您可以在任何时候在任何控制器中执行此操作,重用PagesController
只是在Cake中执行此操作的最方便和最常规的方法。上述答案现已过时,但给出了正确的方法
在现代版本的CakePHP中,他要求您制作的控制器已经存在,并且是:
/app/Controller/PagesController.php
我有一个名为“loggedoff”的模板,并在$this->render()
命令(大约第73行)之前添加了如下内容
这很好:
class RegistrationsController extends AppController {
public $helpers = array('Html', 'Form', 'Time');
public $components = array('Session');
public function login() {
$this->layout = 'empty';
}
}
只需在控制器函数中设置所需的布局。覆盖类并没有变得更聪明一点。我还猜想可以从其他函数调用
$this->layout
,比如init
。实际上,您甚至不需要原始的PagesController
-您可以使用路由指向自定义控制器并从中设置$this->layout
there@Franz“覆盖”是什么意思?@K当然可以,但是按照惯例,只保留静态页面的PagesController是个好主意。很酷,我只是利用第一点实现了这一点。尽管我也注意到另一位同事编写的自定义cms覆盖了此设置。所以基本上我只需要通过cms为主页指定一个模板。当我不使用cms时,我一定会使用这个。谢谢你们的帮助。
class RegistrationsController extends AppController {
public $helpers = array('Html', 'Form', 'Time');
public $components = array('Session');
public function login() {
$this->layout = 'empty';
}
}