2016-07-30 36 views
1

Ich bin neu in PHP Phalcon und ich erstelle ein einfaches REST API-Backend, ich stoße jetzt auf ein Problem.Wie füge ich eine globale zugängliche Variable für Phalcon Micro Framework hinzu?

//define $app in index.php 
$app = new Micro($di) ; 

In einem Controller versuche ich zu definieren (hinzufügen) eine globale zugreifbare Variable zwischen den Controllern mindestens.

//However, the followings are all not working. 
$this->currentWeixinAccessToken = $access_token ; 
$this->getDI()->setShared('currentWeixinAccessToken', $access_token); 
$this->$currentWeixinAccessToken = $access_token; 
$this->di->setShared('currentWeixinAccessToken', $access_token) ; 

Sie können ohne Fehler definiert werden, aber wenn ich sie in einem anderen Controller bin mit,

$access_token = $this->currentWeixinAccessToken; 

Der Fehler ist,

[Sat Jul 30 22:10:20 2016] PHP Notice: Access to undefined property currentWeixinAccessToken in /home/tom/src/phalcontest/app/controllers/PostsController.php on line 48 

Und ich fand hier ein paar Antworten, aber sie funktionieren nicht für mich. Cross controller variables in Phalcon

+0

zu verwenden. Wenn Controller B Controller A erweitert, sollte dies funktionieren. Aber so wie du es beschrieben hast, ist es nicht möglich. Ich denke, Sie suchen etwas wie Sessions-Verhalten, aber nicht genau;) Wenn diese Variable zu $ ​​Di hinzugefügt wird, können Sie darauf zugreifen. –

+0

Ja, es wird das Sitzungsverhalten mögen, aber diese Variable wird in allen Sitzungen gleich sein/ –

+0

Ist der andere Controller (Postcontroller), der auf dieselbe Anfrage zugreift? Oder ist es auf einer anderen Seite –

Antwort

1

Wenn Sie etwas zum Abhängigkeitsinjektor hinzufügen, müssen Sie es über di aufrufen. Deshalb sollten Sie stattdessen versuchen, $access_token = $this->di->currentWeixinAccessToken in Ihrem zweiten Controller zu verwenden. Di ist standardmäßig von Controller in voller Phalcon zugänglich, ich bin mir nicht sicher, was ist mit Micro-Version. Wenn es nicht funktioniert, können Sie versuchen, \Phalcon\Di::getDefault()->currentWeixinAccessToken oder \Phalcon\Di::getDefault()->get('currentWeixinAccessToken')

+0

Vielen Dank, gute Idee, lass mich versuchen –

+0

@ tomriddle_1234 bitte markieren Sie den Beitrag als Antwort, wenn es funktioniert – Luke

+0

leider habe ich versucht, und es funktioniert nicht ... Service 'currentWeixinAccessToken' wasn ' t gefunden im Dependency-Injektionscontainer, Undefinierte Eigenschaft: Phalcon \ Di \ FactoryDefault :: $ currentWeixinAccessToken –