我怎么可以设置title_for_layout在默认PagesController?
-
26-09-2019 - |
题
我不能设置 title_for_layout
在PagesController,涉及通过默认与Cake1.3.
我使用下列中的代码显示功能:
$this->set('title_for_layout','some title');
我做错了什么?
解决方案
在你的控制器,相应的价值是 $this->pageTitle
.
更新
哎呀,正如所指出的评论意见,这是1.2解决方案。1.3的可能性(后做了一些研究)包括:
- 确保
$title_for_layout
正在回荡在布局 - 放置
$this->set()
代码的视图,而不是在控制器
其他提示
如果你想模仿蛋糕1.2的行为,你可以做到以下几点:
在您的app_controller,创建以下方法:
在app / app_controller.php(您可能需要创建这个文件,如果您还没有)
public $pageTitle;
public function beforeRender() {
$this->set('title_for_layout', $this->pageTitle);
}
然后在你的任何动作方法,您可以再使用PAGETITLE,你在1.2会。
public function index() {
$this->pageTitle = 'Some Title';
}
在beforeRender()方法将被调用后您的控制器具有成品加工,但被呈现之前的布局,从而使你的布局设置的变量。
在操作方法中,尝试:
function index()
{
$this->pageTitle= 'Your Title';
}
只是想我会添加到任何新的人发现这个解决方案,你可以做$this->set('title', $title);
在CakePHP的1.3控制器内部和标题会自动呈现。
您可以使用:
$this->assign('title', 'Some title');
和在CTP:
<title><?= $this->fetch('title'); ?></title>
有CakePHP中3.0工作
使用beforeRender()
代替。把下面的在AppController的:
class AppController extends Controller {
var $content;
function beforeRender() {
$this->set('content',$this->content);
}
}
和控制器,你可以做:
function index() {
$this->content['title'] = '123'; }
这是会做的伎俩。
不隶属于 StackOverflow