Cross controller variables in Phalcon

前端 未结 2 448
北恋
北恋 2021-01-12 10:50

In an effort to keep my code DRY I would like to be able to define \"cross controller\" variables.

Classic example is that I would like access to some config items t

相关标签:
2条回答
  • 2021-01-12 10:54

    The following is my setup.

    [PHP]     5.4.1
    [phalcon] 1.2.1
    

    Here is an excerpt from my bootstrap.(/app-root/public/index.php)

        $di = new \Phalcon\DI\FactoryDefault();
    
        // I'll pass the config to a controller.
        $di->set('config', $config);
    
        $application = new \Phalcon\Mvc\Application();
        $application->setDI($di);
        echo $application->handle()->getContent();
    

    And this is an excerpt from my base controller.(/app-root/app/controllers/ControllerBase.php)

        class ControllerBase extends Phalcon\Mvc\Controller
        {
                protected $config;
    
                protected function initialize()
                {
                        $this->config = $this->di->get('config');
                        $appName      = $this->config->application->appName;
    
    0 讨论(0)
  • 2021-01-12 11:02

    You can always use the Di container.

    Once you register a component in the Di it is available in the controller by the magic method. For instance:

    // Bootstrap
    $configFile = ROOT_PATH . '/app/config/config.ini';
    
    // Create the new object
    $config = new \Phalcon\Config\Adapter\Ini($configFile);
    
    // Store it in the Di container
    $this->di->setShared('config', $config);
    

    and in your controller it is as simple as:

    $config = $this->config;
    

    If you create a base controller class, you can pass those objects in the view if needed like so:

    $this->view->setVar('config', $this->config);
    

    Finally the Di container can act also as a registry, where you store items you might want to use in your application.

    For an example of bootstrapping and accessing objects in controllers, have a look at the phalcon/website repository. It implements bootstrapping and base controller patterns among other things.

    0 讨论(0)
提交回复
热议问题