Я пытаюсь создать Zend форму, которая Рекомендации отдельный fieldsets полностью используя аннотации. Я делаю это с помощью ComposedObject
аннотаций. Но никакие аннотации (например, \ type или \ attribute) внутри классов fieldset не добавляются / не используются.
Используются только аннотации из родительской формы.
Например, если бы я должен был добавить @Annotation\Type("number")
в родительский класс Form, тогда тип ввода будет правильно установлен type="number"
, тем не мение, если бы я должен был добавить @Annotation\Type("number")
в класс fieldset, то ничего, нада, я получаю 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;
}
Вот класс fieldset 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);
вместо этого, казалось, это исправить (понятия не имею, почему)