0

请告诉我在 ZF2 中我必须在哪里声明公共数组(国家、城市、密码等......)

autoload/local.phpautoload/global.phpautoload/commonarrays.global.php 中

我需要从我所有模块的Model类和Controller类中访问这些数组。

供参考

我在autoload/local.php中声明了数组,方法是使用ServiceManagerI can access common arrays in Controllerclass,但我需要在

E:\...\ZendSkeletonApplication\module\Member\src\Member\Form\SignupForm.php

显示一个选择框countries。我无法ServiceManagerSignupForm.php中创建实例。

我现在该怎么办?

4

2 回答 2

1

为这些创建类并使用依赖注入来注入控制器/模型/视图助手会很有意义。您可以在 Module.php 中注入控制器并查看帮助程序

将数组包装在类中的原因:目前您可能拥有硬编码的数组,但如果将来您将它们存储在文件/数据库/memcached 中会怎样。

这篇关于 DI 的文章将非常有帮助:

http://www.zfdaily.com/2012/07/getting-dependencies-into-zf2-controllers/

于 2013-07-10T11:33:37.517 回答
0

哇!,我做到了,......

我做了这些改变:

在我的module.php

方法

    public function getServiceConfig()
    {
        return array(
            'factories' => array(
            // some code goes here //
            // some code goes here //

                /**       I added these lines         **/
                'Member\Form\SignupForm' =>  function($sm) {
                    $SignupForm = new SignupForm($sm);
                    return $SignupForm;
                },
                /**      I added these lines         **/
            ),
        );
    }

\module\Member\src\Member\Form\SignupForm.php

    class SignupForm extends Form 
    {
    /**              I added these lines         **/
        protected $serviceManager;

        public function __construct($serviceManager)
        {


            $this->serviceManager = $serviceManager;

            print_r($this->serviceManager->get('Config'));  
        /**              I added these lines         **/    
            // some code goes here //
        }   
            // some code goes here //

    }

\module\Member\src\Member\Controller\MemberController.php

    $form = $this->getServiceLocator()->get('Member\Form\SignupForm');
于 2013-07-12T06:47:01.570 回答