我正在学习zf2,我正面临涉及2(最终更多)模块一起工作的问题。请注意,我仔细阅读this post(以及相关的),这对我有很大的帮助。我将解释一下这个问题:zf2形式:填充选择字段与来自数据库的数据
- 使用第一个模块(FrOption),管理员可以管理网站表单选项。所有选项都存储在一个数据库表是这样的:
ID | FIELD_NAME | FIELD_VALUE
1 |国内|德国|
2 |国家|法国|
3 |性别|男|
4 |性别|女性|
5 | tipo | Car |
6 | tipo | Fly |
...
- 在我的模块(FrItem)我已经建立了它需要一些 “FIELD_NAME” 字段的表格。 我的“item”表格如下:
id | name | id_tipo |
1 | Fiat | 5 |
2 |汉莎航空| 6 |
3 | Ford | 5 |
4 |法国航空6 |
...
(id_tipo是一个选项FK)
还认为:
- 我的实体具有 “TIPO” 属性,二传手+吸气
- 我已经建立了一个ItemHydrator到“地图”id_tipo db字段为“tipo”实体属性
作为一项测试,我已经在我的表单类中添加了这个字段,并且在视图和编辑模式下一切正常:
$this->add( 'type' => 'Zend\Form\Element\Select', 'name' => 'id_tipo', 'options' => array ( 'label' => 'Tipo', 'empty_option' => 'Select', 'value_options' => array ('5' => 'Car', '6' => 'Fly'))
);
现在我想“链接”两个模块:value_options应该从FrOption来,所以我在寻找实现这一要求的最好方式动态数组。
我认为一个解决办法是这样的:
- 添加到我的FrOption/src目录/ FrOption /服务/ FrOption.php服务类getOptionByName($字段名)方法
- 在FrItem /模块.php检索服务,然后使用getOptionByName获取数据,最后将所有注入到Form中。
这可能是一个明智的和可行的解决方案吗?在性能(选项表可能增长)方面,你还有什么关系? 如果有的话,你用什么样的解决方案来解决类似的问题?
感谢
的可能的复制 - > http://stackoverflow.com/ question/12460840/create-a-drop-down-list-in-zend-framework-2 – Crisp 2013-03-21 15:16:45
可能的重复 - > http://stackoverflow.com/questions/15527934/zend-framework-2-0-fill-option -from-database – Sam 2013-03-21 15:18:37
@IamFraz如果你没有找到答案,请参考我的BlogPost但:http://samminds.com/2013/03/zendformelementselect-and-database-values/ – Sam 2013-03-22 16:18:19