Zend 2 Annotations ComposedObject 不采用字段集属性
Zend 2 Annotations ComposedObject doesn't adopt fieldset attributes
我正在尝试创建一个 references 单独 fieldsets[= 的 zend 表单38=] 完全使用注解。我正在使用 ComposedObject
注释来执行此操作。但是字段集 classes 中没有注释(如 \type 或 \attributes)似乎是 added/used.
仅使用 parent 形式的注释。
例如,如果我要将 @Annotation\Type("number")
添加到 parent 表单 class,则输入类型将正确设置为 type="number"
。 但是,如果我要将 @Annotation\Type("number")
添加到字段集 class,那么什么都没有,nada,我得到的是 type=""
。我不知道为什么!!
这是我的 parent 表格:
<?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;
}
这是字段集 class 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');
如有任何帮助或指导,我将不胜感激。
对于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")
别担心,我最终找到了解决方案
问题不是我使用注释的方式,而是出于某种原因,我在视图中呈现表单的方式。
我对每个我认为应该有效的元素都使用了 $this->formRow($form->get('element'));
。
仅使用 $this->form($form);
似乎可以解决问题(不知道为什么)
我正在尝试创建一个 references 单独 fieldsets[= 的 zend 表单38=] 完全使用注解。我正在使用 ComposedObject
注释来执行此操作。但是字段集 classes 中没有注释(如 \type 或 \attributes)似乎是 added/used.
仅使用 parent 形式的注释。
例如,如果我要将 @Annotation\Type("number")
添加到 parent 表单 class,则输入类型将正确设置为 type="number"
。 但是,如果我要将 @Annotation\Type("number")
添加到字段集 class,那么什么都没有,nada,我得到的是 type=""
。我不知道为什么!!
这是我的 parent 表格:
<?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;
}
这是字段集 class 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');
如有任何帮助或指导,我将不胜感激。
对于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")
别担心,我最终找到了解决方案
问题不是我使用注释的方式,而是出于某种原因,我在视图中呈现表单的方式。
我对每个我认为应该有效的元素都使用了 $this->formRow($form->get('element'));
。
仅使用 $this->form($form);
似乎可以解决问题(不知道为什么)