簡體   English   中英

訪問.ctp文件中的全局變量?

[英]Accessing global variable in your .ctp file?

我現在正在學習cakePHP。 我試圖顯示當前登錄的特定用戶名。

所以我要做的是:

public function beforeFilter() {
    $username = '';
    if($this->Auth->loggedIn()) {
        $username = $this->Auth->user('username');
    }
    $this->globalUsername = $username;
}

我假設在任何頁面中我都應該能夠將globalUsername作為變量訪問?

那是正確的還是有更好的方法呢?

非常感謝!

如果希望站點上所有頁面都可以訪問它,則必須在AppController中執行此操作。

class AppController extends Controller {

    public $globalUsername;   

    public function beforeFilter() {
      $username = ($this->Auth->loggedIn()) ? $this->Auth->user('username') : NULL;
      $this->globalUsername = $username;
    }
}

另外,我只是將其轉換為IF語句的簡寫形式。 您也可以像最初一樣使用完整版本。 重要的是在方法之外聲明公共變量。

現在,在任何.ctp文件中,首先檢查變量是否不為NULL。 然后只需回顯$this->globalUsername;

$this->set(compact('username'));

嘗試此操作,以便可以在視圖中使用$ username。

瀏覽博客教程和/或文檔:

$this->set('username', $username);

為什么不以默認布局從會話中提取信息呢? 無需將其寫入控制器。

$username = AuthComponent::user('username');

暫無
暫無

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

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