Iam*_*raz 3 php zend-form zend-db-table zend-framework2
我正在学习zf2,我正面临一个涉及2个(最终更多)模块一起工作的问题.请注意,我仔细阅读了这篇文章(以及相关文章),这对我帮助很大.我将解释一下这个问题:
id | field_name | field_value
1 | country | germany |
2 |国内|法国|
3 |性别|男|
4 |性别|女|
5 | TIPO |汽车|
6 | TIPO |飞|
...
ID |名称| id_tipo |
1 |菲亚特| 5 |
2 |莎| 6 |
3 |福特| 5 |
4 |法国航空6 |
...
(id_tipo是一个选项FK)
还要考虑:
作为测试,我在表单类中添加了这个字段,在视图和编辑模式下一切正常:
$this->add(
'type' => 'Zend\Form\Element\Select',
'name' => 'id_tipo',
'options' => array (
'label' => 'Tipo',
'empty_option' => 'Select',
'value_options' => array ('5' => 'Car', '6' => 'Fly' ) )
Run Code Online (Sandbox Code Playgroud)
);
现在我想"链接"这两个模块:value_options应该是来自FrOption的动态数组,所以我正在寻找实现这个要求的最佳方法.
我认为一个解决方案可能是这样的:
这可能是一个明智和有效的解决方案吗?在性能方面你对它有什么看法(选项表可以增长)?如果有的话,你用什么样的解决方案来解决类似的问题?
谢谢
这可以通过Zend Framework2第1步中的以下2个步骤轻松完成.
add适配器的实例在控制器操作中实例化什么表单类
$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$form = new TestForm ($dbAdapter);
Run Code Online (Sandbox Code Playgroud)
表格中的第2步
namespace Test\Form;
use Zend\Form\Form;
use Zend\Db\Adapter\AdapterInterface;
use Zend\Db\Adapter\Adapter;
class TestForm extends Form
{
protected $adapter;
public function __construct(AdapterInterface $dbAdapter)
{
$this->adapter =$dbAdapter;
parent::__construct("Test Form");
$this->setAttribute('method', 'post');
//your select field
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'name',
'tabindex' =>2,
'options' => array(
'label' => 'Author',
'empty_option' => 'Please select an author',
'value_options' => $this->getOptionsForSelect(),
)
));
// another fields
}
public function getOptionsForSelect()
{
$dbAdapter = $this->adapter;
$sql = 'SELECT id,name FROM newsauthor where active=1 ORDER BY sortorder ASC';
$statement = $dbAdapter->query($sql);
$result = $statement->execute();
$selectData = array();
foreach ($result as $res) {
$selectData[$res['id']] = $res['name'];
}
return $selectData;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,你准备好摇滚了.我希望它对你有所帮助
| 归档时间: |
|
| 查看次数: |
14092 次 |
| 最近记录: |