我无法title_for_layout
在 CakePHP 1.3 默认附带的 PagesController 中进行设置。
我在显示功能中使用以下代码:
$this->set('title_for_layout','some title');
我究竟做错了什么?
我无法title_for_layout
在 CakePHP 1.3 默认附带的 PagesController 中进行设置。
我在显示功能中使用以下代码:
$this->set('title_for_layout','some title');
我究竟做错了什么?
在您的控制器中,相应的值为$this->pageTitle
.
更新
糟糕,如评论中所述,这是 1.2 解决方案。1.3 可能性(经过一些研究)包括:
$title_for_layout
在布局中得到回应$this->set()
代码放在视图中而不是控制器中如果您想模仿 cake 1.2 的行为,您可以执行以下操作:
在您的 app_controller 中,创建以下方法:
在 app/app_controller.php 中(如果你还没有创建这个文件,你可能需要创建)
public $pageTitle;
public function beforeRender() {
$this->set('title_for_layout', $this->pageTitle);
}
然后在您的任何操作方法中,您可以像在 1.2 中一样使用 pageTitle。
public function index() {
$this->pageTitle = 'Some Title';
}
beforeRender() 方法将在您的控制器完成处理之后,但在渲染布局之前调用,从而允许您为布局设置变量。
在 action 方法中,试试这个:
function index()
{
$this->pageTitle= 'Your Title';
}
只是想我会添加到任何找到此解决方案的新人中,您可以$this->set('title', $title);
在控制器内部的 CakePHP 1.3 中执行此操作,并且标题将自动呈现。
您可以使用 :
$this->assign('title', 'Some title');
在 ctp 中:
<title><?= $this->fetch('title'); ?></title>
它适用于 CakePHP 3.0
对于 CakePHP 3.x,
你可以按照这里的建议
本质上,
内部UsersController.php
:
$this->set('title', 'Login');
里面src/Template/Layouts/default.ctp
以上$this->fetch('title');
写:
if (isset($title)) {
$this->assign('title', $title);
}
改为使用beforeRender()
。将以下内容放入 AppController 中:
class AppController extends Controller {
var $content;
function beforeRender() {
$this->set('content',$this->content);
}
}
在控制器中,您可以执行以下操作:
function index() {
$this->content['title'] = '123'; }
这样就行了。