Symfony: получить идентификатор сущности в форме с элементом коллекции - PullRequest
0 голосов
/ 16 января 2019

Я устанавливаю форму с элементом коллекции. Я установил прототип, как описано в документах

Я установил свой javascript для управления частью динамического добавления / удаления.

Но я хочу добавить в качестве элемента данных идентификатор сущности сохраненных элементов, потому что я хочу выполнить проверку ajax (во время заполнения формы, а не на этапе отправки) для уже сохраненных элементов коллекции, если некоторые смена поля. Поэтому мне нужно передать идентификатор сущности в DOm для передачи в данные.

<form ...>

<ul class="tariffAdjustments ulprototype" data-prototype="{{ protos.tariffAdjustment_prototype(form.tariffAdjustments.vars.prototype)|e('html_attr') }}">
  {% for tariffAdjustment in form.tariffAdjustments %}
  <li class="eltariffadjustment" data-taid="XXX">
    {# can't retrieve the element id #}{{dump(form.tariffAdjustments.vars)}}
    {{ protos.tariffAdjustment_prototype(tariffAdjustment)|raw }}
  </li>
  {% endfor %}
</ul>

</form>

В {{dump(form.tariffAdjustments.vars)}} у меня есть:

FormView {#18167 
  +vars: array:30 [
    "value" => PersistentCollection {#9714}
    "form" => FormView {#18167}
    "id" => "module_entity_tariffAdjustments"
    ...
    "prototype" => FormView {#18189 ▼
      +vars: array:27 [▼
        "id" => "module_entity_tariffAdjustments___name__"
        ...
      ]
      +parent: FormView {#18167}
      +children: array:10 []
        "name" => FormView {#18192}     <= entity field exposed in the FormType
        "startDate" => FormView {#18197}
        ...
      -rendered: false
    }
  ]
  +parent: FormView {#8546 ▶}
  +children: array:3 [▼
    0 => FormView {#18336 ▼
      +vars: array:27 [▼
        "value" => TariffAdjustment {#9798 ▼
          -id: 154      <= what i'm looking for
          ...
        }
        ...
      ]
      +parent: FormView {#18167}
      +children: array:10 []
      -rendered: false
    }
    1 => FormView {#18338 ▼
      +vars: array:27 [▼
        "value" => TariffAdjustment {#9798 ▼
          -id: 172      <= what i'm looking for
          ...
        }
        ...
      ]
      +parent: FormView {#18167}
      +children: array:10 []
      -rendered: false
    }
  ]
  -rendered: false
}

Идентификатор моей сущности явно не указан в моем FormType: я не хочу его устанавливать.


EDIT

Основная форма

class ModuleType extends AbstractType
{
  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $em = $options['entity_manager'];
    $builder
      ->add('tariffAdjustments', CollectionType::class, [
        'label' => 'module.tariffAdjustments',
        'required' => false,
        'attr' => [
          'class' => 'collectiondata',
        ],
        'constraints' => new Valid(),
        'entry_type' => TariffAdjustmentType::class,
        'entry_options' => ['entity_manager' => $em],
        'by_reference' => false,
        'allow_add' => true,
        'allow_delete' => true,
      ]);
  }
}

И Форма для сбора

class TariffAdjustmentType extends AbstractType
{

  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $em = $options['entity_manager'];
    $builder
      ->add('name', TextType::class, [
        'label' => 'name',
        'label_attr' => ['class' => 'mandatory'],
        'required' => true,
      ]);
    ...
  }
}

Может быть, я что-то упустил очевидное, но не могу найти что. Спасибо

1 Ответ

0 голосов
/ 16 января 2019

Как глупо с моей стороны:

я настраивал {{dump(form.tariffAdjustments.vars)}} но так как я нахожусь в цикле, мне просто нужно было установить: tariffAdjustment.vars.value.id, который является идентификатором сущности, которую я искал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...