Cakephp 如何在默认页面控制器中为版面设置标题?

Cakephp 如何在默认页面控制器中为版面设置标题?,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,我无法在CakePHP 1.3默认附带的PagesController中为版面设置标题 我在显示功能中使用以下代码: $this->set('title_for_layout','some title'); 我做错了什么?在控制器中,相应的值是$this->pageTitle 更新 Oops,如评论中所述,这是1.2解决方案。1.3可能性(在进行一些研究后)包括: 确保布局的$title\u在布局中得到响应 将$this->set()代码放置在视图中而不是控制器中 我想我会添加到任何找到

我无法在CakePHP 1.3默认附带的PagesController中为版面设置标题

我在显示功能中使用以下代码:

$this->set('title_for_layout','some title');

我做错了什么?

在控制器中,相应的值是
$this->pageTitle

更新

Oops,如评论中所述,这是1.2解决方案。1.3可能性(在进行一些研究后)包括:

  • 确保布局的
    $title\u在布局中得到响应
  • $this->set()代码放置在视图中而不是控制器中

  • 我想我会添加到任何找到此解决方案的新人中,您可以执行
    $this->set('title',$title),标题将自动呈现。

    如果您想模仿cake 1.2的行为,可以执行以下操作:

    在app_控制器中,创建以下方法:

    在app/app_controller.php中(如果尚未创建此文件,则可能需要创建此文件)

    然后,在任何动作方法中,都可以像在1.2中一样使用页面标题

    public function index() {
        $this->pageTitle = 'Some Title';
    }
    
    beforeRender()方法将在控制器完成处理后,但在呈现布局之前调用,从而允许您为布局设置变量。

    改用
    beforeRender()
    。将以下内容放入AppController:

    class AppController extends Controller {
        var $content;
    
        function beforeRender() {
            $this->set('content',$this->content);
        }            
    }
    
    在控制器中,您只需执行以下操作:

    function index() {
        $this->content['title'] = '123'; }
    

    那就行了

    在操作方法中,尝试以下操作:

    function index()
    {
        $this->pageTitle= 'Your Title';
    }
    
    您可以使用:

    $this->assign('title', 'Some title');
    
    在ctp中:

    <title><?= $this->fetch('title'); ?></title>
    
    
    
    它在CakePHP3.0中工作,对于CakePHP3.x

    你可以听从建议

    本质上

    内部
    userscocontroller.php

    $this->set('title', 'Login');
    
    内部
    src/Template/Layouts/default.ctp

    $this->fetch('title')上方

    写:

    if (isset($title)) {
        $this->assign('title', $title); 
    }
    

    作为补充:您还可以在相应的视图中设置此值,这将是更多的MVCSorry家伙,但$this->PageTitle是用于cakephp 1.2的,而不是我所知的1.3。在任何情况下,在cakephp 1.2中使用时都会产生错误。抱歉。我错过了你问题中的1.3规范,如果那不是编辑的一部分。它看起来确实在1.3()中消失了。我还没有使用1.3,但阅读文档表明,如果其余内容正确,您所做的应该是有效的。冒着陈述显而易见的风险,您是否在实际布局中重复
    $title\u for_layout
    变量?e、 g.
    ?看起来解决方案是将$this->set()代码放在视图中,而不是控制器中。更新:从2.5开始,布局的
    $title\u已被弃用
    
    if (isset($title)) {
        $this->assign('title', $title); 
    }