$this->set('title', 'Title Name');在 CakePHP 3.x 中不起作用

2021-12-21 00:00:00 php cakephp-3.0 cakephp

基本上在 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

相关文章