$this->set('标题', '标题名称');在 CakePHP 3.x 中不工作

2023-11-22

基本上在 default.ctp 中我的标题是这样的:

<title>
  <?= $this->fetch('title') ?>
</title>

在控制器内部我有这一行:

$this->set('title', 'Test-Title');

但它什么也没做,它仍然显示控制器名称(Jobs,Job Controller.ctp的控制器全名)

但是如果我把它放在我的视图文件中:

$this->assign('title', 'Test-Title');

它改变了标题。那么 $this->set('title', $title) 出了什么问题?


fetch()返回块的内容而不是变量。使用set()在您的控制器中设置一个变量,可以通过回显该变量在您的视图模板中输出:-

<?php echo $title; ?>

如果你想使用fetch()你需要结合使用它assign()在视图模板中定义块。例如在您的视图模板中使用:-

<?php $this->assign('title', $title); ?>

然后在布局模板中:-

<title><?php echo $this->fetch('title'); ?></title>

在 CakePHP 3 中,想法是通过在视图中分配页面标题来设置页面标题,因为它与页面的呈现相关。这与您在 CakePHP 2 中定义的最初处理方式不同title_for_layout在你的控制器中,然后回显$title_for_layout布局模板中的变量(在 Cake 2 的更高版本中,这已被弃用,取而代之的是 CakePHP 3 方法)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

$this->set('标题', '标题名称');在 CakePHP 3.x 中不工作 的相关文章

随机推荐