如何在默认的PagesController中设置title_for_layout?

时间:2010-04-13 11:06:06

标签: cakephp cakephp-1.3

我无法在CakePHP 1.3默认使用的PagesController中设置title_for_layout

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

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

我做错了什么?

7 个答案:

答案 0 :(得分:7)

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

<强>更新

哎呀,正如评论中所指出的,这是1.2解决方案。 1.3可能性(经过一些研究后)包括:

  1. 确保布局中回显$title_for_layout
  2. $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'; }

那就行了。