簡體   English   中英

CakePHP-無法在視圖中獲取會話變量

[英]CakePHP - can't get session variable in view

在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文檔並進行了搜索,那么我在這里做錯了什么?

謝謝!

編輯:

我也嘗試過使用:

$this->Session->read('Project.title')

導致出現相同的錯誤消息。

您應該執行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編碼約定。

isset()無法處理此類功能。 存儲該$session對象的read()函數的返回值, 然后if()條件內測試該變量:

$title = $session->read('Project.title');
echo ($title) ? $title : '';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM