我无法在CakePHP 1.3默认使用的PagesController中设置title_for_layout
。
我在显示功能中使用以下代码:
$this->set('title_for_layout','some title');
我做错了什么?
答案 0 :(得分:7)
在您的控制器中,相应的值为$this->pageTitle
。
<强>更新强>
哎呀,正如评论中所指出的,这是1.2解决方案。 1.3可能性(经过一些研究后)包括:
$title_for_layout
$this->set()
代码放在视图中而不是放在控制器中答案 1 :(得分:3)
如果您想模仿蛋糕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()方法,从而允许您为布局设置变量。
答案 2 :(得分:2)
在动作方法中,试试这个:
function index()
{
$this->pageTitle= 'Your Title';
}
答案 3 :(得分:1)
以为我会添加到找到此解决方案的新人,你可以在控制器内的CakePHP 1.3中执行$this->set('title', $title);
,标题将自动呈现。
答案 4 :(得分:1)
您可以使用:
$this->assign('title', 'Some title');
和ctp:
<title><?= $this->fetch('title'); ?></title>
它适用于CakePHP 3.0
答案 5 :(得分:1)
对于CakePHP 3.x,
您可以按照建议here
进行操作基本上,
内部UsersController.php
:
$this->set('title', 'Login');
内部src/Template/Layouts/default.ctp
在$this->fetch('title');
写:
if (isset($title)) {
$this->assign('title', $title);
}
答案 6 :(得分:0)
请改用beforeRender()
。将以下内容放在AppController中:
class AppController extends Controller {
var $content;
function beforeRender() {
$this->set('content',$this->content);
}
}
在控制器中,您可以这样做:
function index() {
$this->content['title'] = '123'; }
那就行了。