Неопределяемые поля формы Symfony2 препятствуют проверке формы

У меня есть список пользователей, которые могут быть активными или нет.

Для всех пользователей я создаю поле выбора с ролью, которую может иметь пользователь.

Во время рендеринга я отображаю только поля для активных пользователей.

После завершения отображения формы я использую

{{form_end (form, {‘render_rest’: false})}}

чтобы избежать ненужных полей для визуализации. Эти неопределяемые поля препятствуют проверке формы.
Я пытался создать скрытое поле выбора, но не смог.

Вот соответствующий код:

$form = $this->createFormBuilder()->getForm(); //create empty form
foreach ($HRsInThisProject as $key => $HR)
{
$form->add('roleOf_'.$key, 'choice', array('choices'   => $rolesListForForm,'required'  => true,'data' => $HR['role'], 'label' => false, ));
}
$form->add('save', 'submit', array('label' => 'Save'));

У меня в ветке есть:

<table>
<tr>
<td>User ID</td>
<td>Name</td>
<td>Role</td>
<td>Started</td>
</tr>

{% for key, HR in HRs %}
{% if HR.is_active %}
<tr>
<td>{{ key }}</td>
<td>{{ HR.name }}</td>
<td>{{ form_row(form['roleOf_' ~ key]) }}</td>
<td>{{ HR.started_at|date('Y-m-d H:i:s') }}</td>
</tr>
{% endif %}
{% endfor %}
</table>
<br>
{{ form_row(form.save) }}
{{ form_end(form, {'render_rest': false}) }}

Это то, что я хотел бы иметь (обратите внимание, что отображаются только соответствующие поля):
введите описание изображения здесь

Если с другой стороны, если я использую:

{{form_end (форма)}}

Тогда код работает, но я вижу ненужные поля:

введите описание изображения здесь

Я также попытался сделать ненужные поля необязательными, но проблема сохраняется.

Любая идея?

0

Решение

Чтобы это поле не отображалось, вы должны удалить его из FormType и назначить значение по умолчанию для этого поля в объекте как

Class User {

protected $unnecessary = "Some Value";

}

Или вы можете использовать FormEvents назначить значение по умолчанию для этого свойства

http://symfony.com/doc/current/components/form/form_events.html

Или вы можете сделать поле скрытым

http://symfony.com/doc/current/reference/forms/types/hidden.html

Суть в том, как только вы добавите свойство к FormType это поле будет отображено наверняка.

0

Другие решения

{{ form_end(form, {'render_rest': false}) }}

Если поле формы не отображается, то его значение будет отправлено как NULL,
Поэтому, если вы уже установили значение для этого поля, оно будет аннулировано.

0

По вопросам рекламы [email protected]