基本上在 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(使用前将#替换为@)