我尝试使用注释创建 引用 分隔 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');
如果有任何帮助或指示,我将不胜感激。
答案 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);
似乎可以解决问题(不知道为什么)