Zend 2 Аннотации ComposedObject не принимает атрибуты fieldset

Я пытаюсь создать Zend-форму, которая ссылается на отдельные наборы полей полностью с использованием аннотаций. Я делаю это с помощью 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');

Буду благодарен за любую помощь или указание.

2 ответа

Решение

Не волнуйтесь, ребята, я нашел решение в конце концов

Проблема была не в том, как я использовал аннотации, а в том, почему я по какой-то причине отображал форму в представлении.

Я использовал $this->formRow($form->get('element')); для каждого элемента, который должен работать на мой взгляд.

Используя только $this->form($form); вместо этого, казалось, это исправить (понятия не имею, почему)

За 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")

Другие вопросы по тегам