【问题标题】:How to use setAttribute on a form collection in ZF2?如何在 ZF2 中的表单集合上使用 setAttribute?
【发布时间】:2013-02-20 17:04:18
【问题描述】:

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

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

我不知道如何设置集合的值。

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

看来我需要更深入一层并选择特定字段,以便我可以在其上使用->setAttribute

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

【问题讨论】:

    标签: collections zend-framework2


    【解决方案1】:

    我遇到了一些真正的麻烦,我实际上可以访问集合中的字段集的唯一方法是使用以下方法。 (如果集合有多个字段集,则必须在 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');
    

    我希望这可以对某人有所帮助。

    【讨论】:

      【解决方案2】:

      使用表单集合作为数组:

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

      【讨论】:

      • 我认为这让我更接近。看来我需要将 $element 重新放入 $form 对象中。 $form->add($element); 只是复制输入字段而不添加值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多