Question

J'ai 2 contrôleurs, TEST1Controller et TEST2Controller

Dans TEST2Controller j'ai un initialize() valeur de réglage de fonction d’une propriété.

Si j'essaie d'accéder TEST2Controller directement depuis le navigateur, tout fonctionne parfaitement.

Mais quand j'appelle un TEST2Controller méthode de TEST1Controller, Il paraît que initialize() la fonction n'est pas appelée TEST2Controller.

TEST1Controller:

namespace Modcont\Controller;

use Modcont\Controller\Test2Controller;

class Test1Controller extends BaseController
{

    function gettestAction()
    {
       $t = new Test2Controller(); // calling TEST2 Controller Method Within TEST1 Controller
       echo $t->dotestAction(" MYAPP ");
    }    
}

TEST2Controller:

namespace Modcont\Controller;

class Test2Controller extends BaseController
{   
    public $prefix;
    function initialize()
    {
        $this->prefix = 'your name is';
    }

    function dotestAction($name)
    {
        return $this->prefix.' : '.$name; 
    } 

}
Était-ce utile?

La solution

Phalcon propose deux méthodes d'initialisation du contrôleur. initialize et onContruct méthodes.La différence fondamentale entre ces deux méthodes est que initialize est appelé seulement lorsqu'un contrôleur est créé par le framework pour procéder à l'exécution d'une action.Depuis que vous instanciez un objet contrôleur ad hoc, initialize ne sera pas appelé, seulement onConstruct volonté.Vous devrez donc y mettre votre logique d'initialisation :

function onConstruct()
{
    $this->prefix = 'your name is';
}

De plus, l'implémentation de constructeurs natifs dans le contrôleur est déconseillée, mais si vous le faites, assurez-vous d'appeler le constructeur parent dans votre propre constructeur : parent::__construct();.

Toutes ces informations peuvent être trouvées dans les documents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top