2017-05-24 116 views
0

我正在CakePHP 3.4中工作,並且想要創建一個全局變量來存儲 可以在整個應用程序中使用的一些信息。如何在cakephp中創建全局變量3.4

我在s.ctp其中嘗試這種代碼 是我寫

<?php 
namespace App\Controller; 
use Cake\Controller\Controller; 
use Cake\Event\Event; 
use Cake\Core\Configure; 

Configure::write('variable_name', 'Some Value'); 
    ?> 

p.ctp得到這個全局變量在我的代碼是

<?php 
namespace App\Controller; 
use Cake\Controller\Controller; 
use Cake\Event\Event; 
use Cake\Core\Configure; 

echo Configure::read('variable_name'); 
?> 

,但沒有什麼是顯示第一控制器echo我做錯了什麼?

+0

'* .ctp'文件用於[Views](https://book.cakephp.org/3.0/en/views.html)。閱讀有關MVC的內容,然後執行CakePHP教程。 – jbe

+0

[檢查此](https://stackoverflow.com/questions/37762119/cakephp-3-define-global-contant-variable/37762321#37762321) –

回答

0

我想你想存儲這個數據在Session Object

$name = $this->request->session()->read('User.name'); 

// If you are accessing the session multiple times, 
// you will probably want a local variable. 
$session = $this->request->session(); 
$name = $session->read('User.name'); 


$session->write('first_access', true); 
$first_access = $session->read('first_access'); 
+0

我不想使用會議我想使用全局變量可以你幫我在 –

+0

我認爲這是最好的方式,除非你想存儲配置數據。 –

+0

要存儲配置數據,你應該使用'Cake \ Core \ Configure',如果你想,我編輯添加示例的問題。 –

0

你想在bootstrap.php或AppController初始化你的全局變量。如果您在AppController做你想要做的initialize()方法: -

public function initialize() 
{ 
    parent::initialize(); 
    Configure::write('variable_name', 'Some Value'); 
} 

然後您應該好你的視圖模板用它作爲顯示在你的問題。

+0

public function initialize() parent :: initialize(); 配置:: write('variable_name','Some Value'); } –

+0

我不確定'使用另一個控制器'是什麼意思。如果你想在你的應用程序中全局訪問,你可以在AppController中找到它。如果你只需要爲特定的控制器設置它,那麼你可以在該控制器的'initialize'方法中設置它。 – drmonkeyninja

+0

嘿感謝回覆我想寫一些值在從s.ctp文件中的bootstrap.php中聲明的變量,並在意味着,而我必須閱讀另一個控制器是p.ctp,我該怎麼做 –