2017-05-24 35 views
0

私はCakePHP 3.4で作業しており、アプリケーション全体で使用できるいくつかの情報を格納するためにグローバル変数を作成したいと考えています。cakephpでグローバル変数を作成するには3.4

私は

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

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

と私のコードは

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

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

ですが、何もに示されていないp.ctpで、このグローバル変数を取得を書いています最初のコントローラであるs.ctpにこのコード を試してみましたecho私は何が間違っていますか?

+0

'* .ctp'ファイルは[Views](https://book.cakephp.org/3.0/ja/views.html)用です。 MVCについて読んでから、CakePHPチュートリアルをしてください。 – jbe

+0

[これをチェック](https://stackoverflow.com/questions/37762119/cakephp3-3define-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

パブリック関数initialize() { parent :: initialize(); Configure :: write( 'variable_name'、 'Some Value'); } –

+0

「別のコントローラを使用する」とはどういう意味ですか。これをあなたのアプリケーションでグローバルにアクセス可能にしたい場合は、これを 'AppController'に入れます。これを特定のコントローラに対してのみ設定する必要がある場合は、そのコントローラの 'initialize'メソッドで設定することができます。 – drmonkeyninja

+0

お返事ありがとう私はs.ctpファイルからbootstrap.phpで宣言された変数にいくつかの値を書きたいと思いますが、p.ctpである別のコントローラーを読み込む必要がありますが、どうすればできますか –

関連する問題