Cakephp 如何在默认页面控制器中为版面设置标题?
我无法在CakePHP 1.3默认附带的PagesController中为版面设置标题 我在显示功能中使用以下代码:Cakephp 如何在默认页面控制器中为版面设置标题?,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,我无法在CakePHP 1.3默认附带的PagesController中为版面设置标题 我在显示功能中使用以下代码: $this->set('title_for_layout','some title'); 我做错了什么?在控制器中,相应的值是$this->pageTitle 更新 Oops,如评论中所述,这是1.2解决方案。1.3可能性(在进行一些研究后)包括: 确保布局的$title\u在布局中得到响应 将$this->set()代码放置在视图中而不是控制器中 我想我会添加到任何找到
$this->set('title_for_layout','some title');
我做错了什么?在控制器中,相应的值是
$this->pageTitle
更新
Oops,如评论中所述,这是1.2解决方案。1.3可能性(在进行一些研究后)包括:
$title\u在布局中得到响应
$this->set()代码放置在视图中而不是控制器中
我想我会添加到任何找到此解决方案的新人中,您可以执行
$this->set('title',$title)控制器内的CakePHP 1.3中的代码>,标题将自动呈现。如果您想模仿cake 1.2的行为,可以执行以下操作:
在app_控制器中,创建以下方法:
在app/app_controller.php中(如果尚未创建此文件,则可能需要创建此文件)
然后,在任何动作方法中,都可以像在1.2中一样使用页面标题
public function index() {
$this->pageTitle = 'Some Title';
}
beforeRender()方法将在控制器完成处理后,但在呈现布局之前调用,从而允许您为布局设置变量。改用beforeRender()
。将以下内容放入AppController:
class AppController extends Controller {
var $content;
function beforeRender() {
$this->set('content',$this->content);
}
}
在控制器中,您只需执行以下操作:
function index() {
$this->content['title'] = '123'; }
那就行了 在操作方法中,尝试以下操作:
function index()
{
$this->pageTitle= 'Your Title';
}
您可以使用:
$this->assign('title', 'Some title');
在ctp中:
<title><?= $this->fetch('title'); ?></title>
它在CakePHP3.0中工作,对于CakePHP3.x
你可以听从建议
本质上
内部userscocontroller.php
:
$this->set('title', 'Login');
内部src/Template/Layouts/default.ctp
在$this->fetch('title')上方代码>
写:
if (isset($title)) {
$this->assign('title', $title);
}
作为补充:您还可以在相应的视图中设置此值,这将是更多的MVCSorry家伙,但$this->PageTitle是用于cakephp 1.2的,而不是我所知的1.3。在任何情况下,在cakephp 1.2中使用时都会产生错误。抱歉。我错过了你问题中的1.3规范,如果那不是编辑的一部分。它看起来确实在1.3()中消失了。我还没有使用1.3,但阅读文档表明,如果其余内容正确,您所做的应该是有效的。冒着陈述显而易见的风险,您是否在实际布局中重复$title\u for_layout
变量?e、 g.
?看起来解决方案是将$this->set()代码放在视图中,而不是控制器中。更新:从2.5开始,布局的$title\u已被弃用
if (isset($title)) {
$this->assign('title', $title);
}