请告诉我在ZF2中,我必须申报常见数组(国家,城市,密码等)
在 autoload / local.php , autoload / global.php 或 autoload / commonarrays.global.php ?
我需要从我的所有模块Model
类和Controller
类中访问这些数组。
FYI
我使用ServiceManager
在 autoload / local.php 中声明了数组我可以访问Controller
类中的公共数组,但我需要访问>}中的公共数组
E:\...\ZendSkeletonApplication\module\Member\src\Member\Form\SignupForm.php
显示countries
的选择框。我无法在 SignupForm.php 中创建ServiceManager
的实例。
我现在该做什么?
答案 0 :(得分:1)
为这些创建类并使用依赖注入注入控制器/模型/视图助手是很有意义的。您可以在Module.php中注入控制器并查看帮助程序
将数组包装在类中的原因:目前您可能拥有硬编码数组,但如果将来将这些数组存储在文件/数据库/ memcached中,该怎么办。
关于DI的这篇文章将非常有用:
http://www.zfdaily.com/2012/07/getting-dependencies-into-zf2-controllers/
答案 1 :(得分: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');