在ProjectsController.php中我正在设置会话变量,因为我希望在所有控制器,模型和视图中都可以访问该信息:
$this->Session->write('Project.title', $this->Project->title);
现在,当我尝试从“项目”视图访问它时,如下所示:
<p>Project: <strong>
<?php if (isset($session->read('Project.title'))):
$session->read('Project.title');
?>
<?php else: ?>
Not selected
<?php endif; ?>
</strong></p>
我收到以下错误:
Fatal error: Can't use method return value in write context
其中涉及上述代码的第二行。
我一直在浏览CakePHP文档并搜索过SO,我在这里做错了什么?
谢谢!
编辑:
我也尝试过使用:
$this->Session->read('Project.title')
导致相同的错误消息。
答案 0 :(得分:6)
你应该做一次PHP告诉你的事情:) 错误消息非常清楚。你不能这样使用isset()和empty()。 它们只能直接使用变量,而不能使用方法。所以使用
<?php if ($this->Session->check('Project.title')) {
echo $this->Session->read('Project.title');
} ?>
如食谱中所述
你也可以
<?php
$title = $this->Session->read('Project.title');
if ($title) {
echo $title;
} ?>
甚至
<?php if ($title = $this->Session->read('Project.title')) {
echo $title;
} ?>
最后一个不是cakephp编码约定。
答案 1 :(得分:0)
isset()
无法处理此类功能。存储$session
对象的read()
函数的返回值,然后在if()
条件中测试该变量:
$title = $session->read('Project.title');
echo ($title) ? $title : '';