Я обнаружил какое-то странное поведение с отрисованным контроллером, который отображает форму редактирования для моей сущности.
Но обо всем по порядку:
Я визуализирую шаблон с отображением объекта. Если вошедший в систему пользователь является тем же пользователем, что и владелец этого объекта, я также отображаю другой контроллер, скрытый с помощью формы редактирования для этого объекта. Пользователь может получить к нему доступ с помощью кнопки, которая запускает переключатель jQuery.
Сущность имеет 2 текстовых поля, которые могут быть пустыми: описание и ситуация.
- Поэтому, если один из двух или оба пусты, форма редактирования будет отображаться в текстовом поле
(null)
по умолчанию. Я не хочу этого! Как я могу это исправить, чтобы текстовые поля были пустыми, как значение поля (чтобы отображался мой заполнитель).
Вот изображение, чтобы визуализировать это:
Но далее: Эта Сущность (Пои) принадлежит другой Сущности (Повороту), поэтому 1 Поворот -> много Пои. Вы можете перемещаться по pois на моем сайте.
Но если владелец перемещается по ним (имейте в виду, форма редактирования будет отображаться, но не отображаться до тех пор, пока кнопка не будет нажата) все поля описания и ситуации теперь отображают (null)
, даже если он не сохранил редактирование. Это просто происходит само собой.
Вот изображение, которое показывает это
- Почему это происходит? Что я могу сделать против этого? Может быть, есть что-то вроде опции
empty value
в типе формы?
Я искал решение, но не нашел ничего похожего на мою ситуацию.
Форма построена из моего типа формы:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text', array(
'required' => false
))
->add('situation', 'textarea', array(
'required' => false
))
->add('description', 'textarea', array(
'required' => false
))
->add('isPrivateText', 'checkbox', array(
'required' => false
))
->add('isPrivateImage', 'checkbox', array(
'required' => false
))
;
}
Соответствующая часть моего edit.html.twig
<p class="edit_form"><span class="edit_left">{{ form_label(edit_form.situation, 'Situation') }} </span>
<span class="edit_right">{{ form_widget(edit_form.situation, { attr: {'placeholder': 'Törn Situation'} }) }}</span></p>
<p class="edit_form"><span class="edit_left">{{ form_label(edit_form.description, 'Beschreibung') }} </span>
<span class="edit_right">{{ form_widget(edit_form.description, { attr: {'placeholder': 'Törn Beschreibung'} }) }}</span></p>
Где мой showPoi.html.twig отображает контроллер формы:
<div class="col-md-6 col-sm-6 toggle_edit" style="display: none;">
<div>
{% render controller('MysailinglogMysailinglogBundle:Poi:edit', { id: poi[0].id , poi: poi}) %}
<!-- Don't worry about the 2 divs, i just shortened up the code -->
</div>
</div>