php - $this->设置 ('title' , 'Title Name' );在 CakePHP 3.x 中不工作

标签 php cakephp cakephp-3.0

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

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

在 Controller 内部我有这一行:

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

但它什么都不做,它仍然显示 Controller 名称(Jobs, controllers full name os JobsController.ctp)

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

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

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

最佳答案

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

<?php echo $title; ?>

如果你想使用fetch(),你需要在 View 模板中结合使用assign()来定义 block 。例如在您的 View 模板中使用:-

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

然后在布局模板中:-

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

在 CakePHP 3 中,想法是通过在 View 中分配页面标题来设置页面标题,因为它与页面的呈现相关。这与 CakePHP 2 中最初的处理方式不同,在 CakePHP 2 中,您将在 Controller 中定义 title_for_layout,然后在布局模板中回显 $title_for_layout 变量(这在在 Cake 2 的更高版本中支持 CakePHP 3 方法。

关于php - $this->设置 ('title' , 'Title Name' );在 CakePHP 3.x 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30171030/

相关文章:

php - 如何在加载页面后重新填充变量

javascript - cakephp 外部 js 文件中的图像声明

sql - CakePHP 3 : how to make a sum of 2 columns

php - 构建 PHP 应用程序,对设计模式感到困惑

php - 如何绕过 toHtml() 在 Magento 中打印 html 标签

php - Magento:如何将商店设置转移到默认范围?

php - 将值从一个表转储到 MySQL 中的另一个表

php - CakePHP:带有 saveMany 的未知列

php - 如何判断 CakePHP 3.x 中的 Debug模式是否打开

php - 如何计算 CakePHP 3.x 中 page() 使用的 OFFSET 值?