CakePHP - 无法在视图中获取会话变量

Cod*_*oso 2 php session cakephp

在ProjectsController.php中,我正在设置会话变量,因为我希望在所有控制器,模型和视图中都可以访问该信息:

$this->Session->write('Project.title', $this->Project->title);
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试从Projects视图访问它时,如下所示:

        <p>Project: <strong>
        <?php if (isset($session->read('Project.title'))): 
            $session->read('Project.title');
        ?>
        <?php else: ?>
            Not selected
        <?php endif; ?>
        </strong></p>       
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Fatal error: Can't use method return value in write context 
Run Code Online (Sandbox Code Playgroud)

这是指上面代码的第二行.

我已经通过CakePHP文档并搜索了SO,我在这里做错了什么?

谢谢!

编辑:

我也尝试过使用:

$this->Session->read('Project.title')
Run Code Online (Sandbox Code Playgroud)

导致相同的错误消息.

mar*_*ark 6

你应该做的PHP偶尔会告诉你:)错误信息非常清楚.你不能这样使用isset()和empty().它们只能直接使用变量,而不能使用方法.所以使用

<?php if ($this->Session->check('Project.title')) {
    echo $this->Session->read('Project.title');
} ?>
Run Code Online (Sandbox Code Playgroud)

如食谱中所述

你也可以这样做

<?php
$title = $this->Session->read('Project.title');
if ($title) {
    echo $title;
} ?>
Run Code Online (Sandbox Code Playgroud)

甚至

<?php if ($title = $this->Session->read('Project.title')) {
    echo $title;
} ?>
Run Code Online (Sandbox Code Playgroud)

但最后一个不是cakephp编码约定.