我不能设置 title_for_layout 在PagesController,涉及通过默认与Cake1.3.

我使用下列中的代码显示功能:

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

我做错了什么?

有帮助吗?

解决方案

在你的控制器,相应的价值是 $this->pageTitle.

更新

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

  1. 确保 $title_for_layout 正在回荡在布局
  2. 放置 $this->set() 代码的视图,而不是在控制器

其他提示

如果你想模仿蛋糕1.2的行为,你可以做到以下几点:

在您的app_controller,创建以下方法:

在app / app_controller.php(您可能需要创建这个文件,如果您还没有)

public $pageTitle;

public function beforeRender() {
    $this->set('title_for_layout', $this->pageTitle);
}

然后在你的任何动作方法,您可以再使用PAGETITLE,你在1.2会。

public function index() {
    $this->pageTitle = 'Some Title';
}

在beforeRender()方法将被调用后您的控制器具有成品加工,但被呈现之前的布局,从而使你的布局设置的变量。

在操作方法中,尝试:

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工作

使用beforeRender()代替。把下面的在AppController的:

class AppController extends Controller {
    var $content;

    function beforeRender() {
        $this->set('content',$this->content);
    }            
}

和控制器,你可以做:

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

这是会做的伎俩。

scroll top