如何在ZF2中的表单集合上使用setAttribute?

时间:2013-02-20 17:04:18

标签: collections zend-framework2

我没有找到任何有关为Zend Framework 2表单集合设置字段属性的文档。我可以像这样设置单个输入字段的值:

$form->get('title')->setAttribute('value', $value);

我无法弄清楚如何设置集合的值。

$form->get('sample_collection')返回Zend \ Form \ Element \ Collection对象

似乎我需要深入一层并选择特定字段,以便我可以使用->setAttribute

提前感谢您帮助解决此问题。

2 个答案:

答案 0 :(得分:2)

我遇到了一些真正的麻烦,我实际上可以访问集合中的字段集的唯一方法是使用以下内容。 (如果集合中有多个字段集,则必须在foreach循环中添加if语句以获取所需的字段集。)

$array = array('keys'=>'values');
$collection = $form->get('name_of_collection');
foreach ($collection as $coll)
{
    $fieldset = $coll;
}

$element = $fieldset->get('name_of_element');
$element->setValueOptions($array);

我希望以下工作正常,但事实并非如此。我不确定这是Zend框架中的错误还是我做错了。

$collection = $form->get('name_of_collection');
$fieldset = $collection->get('name_of_fieldset');
$element = $fieldset->get('name_of_element');

如果您只想访问字段集内的单个元素而不是集合内部。以下对我来说很好。

$fieldset = $form->get('name_of_fieldset');
$element = $fieldset->get('name_of_element');
$element->setAttribute('id', 'name_of_element');

我希望这对某人有帮助。

答案 1 :(得分:1)

将表单集合用作数组:

$elements = $form->get('sample_collection');
foreach($elements as $element){
    $element->setAttribute('value', $value);
}