0

我正在尝试创建一个 zend 表单,它完全使用注释来引用单独的字段集。我正在使用ComposedObject注释来执行此操作。但似乎没有添加/使用字段集类内的注释(如 \type 或 \attributes)。

仅使用来自父表单的注释。

例如,如果我要添加@Annotation\Type("number")到父 Form 类,那么输入类型将正确设置为type="number". 但是,如果我要添加@Annotation\Type("number")到 fieldset 类,那么什么都没有,nada,我得到type=""了。我不知道为什么!

这是我的父表格:

<?php
namespace Permits\Form;

use Zend\Form\Annotation as Form;

/**
 * @Form\Name("trips")
 * @Form\Attributes({"method":"post"})
 * @Form\Type("Permits\Form\Form")
 */
class TripsForm
{


    /**
     * @Form\Name("numberOfTrips")
     * @Form\ComposedObject("Permits\Form\Model\Fieldset\numOfTrips")
     */
    public $numberOfTrips = null;


}

这是字段集类Permits\Form\Model\Fieldset\numOfTrips

<?php
namespace Permits\Form\Model\Fieldset;

use Zend\Form\Annotation as Form;
/**
 * @Form\Name("numOfTrips")
 * @Form\Attributes({
 *     "class": ""
 * })
 */
class numOfTrips
{

    /**
     * @Form\Attributes({
     *   "class" : "input--trips",
     * })
     * @Form\Options({
     *     "label": "",
     * })
     * @Form\Type("number")
     *
     */
    public $numOfTrips = null;

}

我正在使用以下方法创建表单:

$builder = new AnnotationBuilder();
$form = $builder->createForm('Permits\Form\TripsForm');

我将不胜感激任何帮助或指导。

4

2 回答 2

0

因为ComposedObject你需要传递你的对象"target_object",如果有集合,然后设置“ is_collection”键。

我已将其编辑如下,

 class TripsForm
  {
    /**
     * @Form\Name("numberOfTrips")
     * @Form\ComposedObject({"target_object":"Permits\Form\Model\Fieldset\numOfTrips", "is_collection": true})
     */
    public $numberOfTrips = null;


    }

使用完整路径也很好,即:@Form\Type("Zend\Form\Element\Number")

于 2018-06-13T08:59:48.207 回答
0

别着急,我终于找到了解决办法

问题不在于我使用注释的方式,而是出于某种原因,我在视图中呈现表单的方式。

我正在使用$this->formRow($form->get('element'));我认为应该起作用的每个元素。

使用 just$this->form($form);似乎可以解决它(不知道为什么)

于 2018-06-20T16:00:31.727 回答