Zend 2 Аннотации ComposedObject не принимает атрибуты набора полей - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь создать 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;

}

IЯ создаю форму, используя:

$builder = new AnnotationBuilder();
$form = $builder->createForm('Permits\Form\TripsForm');

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

Ответы [ 2 ]

0 голосов
/ 20 июня 2018

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

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

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

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

0 голосов
/ 13 июня 2018

Для 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")

...