Zend 2 Annotations ComposedObject没有采用fieldset属性

时间:2018-06-12 10:50:42

标签: php annotations zend-framework2 zend-form zend-form-fieldset

我尝试使用注释创建 引用 分隔 fieldsets 的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');

如果有任何帮助或指示,我将不胜感激。

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

别担心,我终于找到了解决方法

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

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

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