$this->set('title', 'Title Name');在 CakePHP 3.x 中不起作用
基本上在 default.ctp 我的标题中有这个:
Basically in default.ctp I have this for my title:
<title>
<?= $this->fetch('title') ?>
</title>
在控制器内部我有这条线:
And inside of the controller I have this line:
$this->set('title', 'Test-Title');
但是它什么也没做,它仍然显示控制器名称(Jobs,控制器全名 os JobsController.ctp)
But it does nothing, it still displays controllers name(Jobs, controllers full name os JobsController.ctp)
但是如果我把它放在我的视图文件中:
But if I put this inside of my view file:
$this->assign('title', 'Test-Title');
它改变了标题.那么 $this->set('title', $title) 有什么问题?
It changes the title. So what is wrong with $this->set('title', $title) ?
推荐答案
你可以在你的控制器中set()
变量:
You can just set()
the variable in your controller:
// View or Controller
$this->set('title', 'Test-title');
然后将其用作布局或视图中的标准变量:
Then use it as a standard variable is in your layout or view:
<!-- Layout or View -->
<title>
<?php echo $title; ?>
</title>
此处的详细信息:http://book.cakephp.org/3.0/en/views.html#setting-view-variables
使用 assign()
是不同的,这就是它与 fetch()
一起使用的原因.assign()
与视图块一起使用:http://book.cakephp.org/3.0/en/views.html#using-view-blocks
Using assign()
is different, which is why it works with fetch()
. assign()
is used with View Blocks: http://book.cakephp.org/3.0/en/views.html#using-view-blocks
相关文章