Проверка формы обнаружения

у меня есть динамический форма.

Например, если что-то, моя форма содержит FormType1, иначе моя форма содержит FormType2 или FormType3 ….

Я бы обнаружил, если моя форма изменена.
Если моя форма заполнена, я подаю заявление valid() метод, и если есть ошибка, я возвращаю в форме или, если нет ошибки, я применяю перенаправление.
Я знаю, как это сделать.

Но, если бы мой фом был представлен без изменений (без нового значения) Я хочу применить другое перенаправление без проверки потому что моя проверка вернет false с обязательными полями.

Я не могу проверить, все ли значения равны NULL, потому что в форме может быть комбобокс, логическое или начальное значение, …

У меня есть решение с помощью JavaScript и две кнопки отправки.
Если значение кнопки submit равно just_redirection, я не применяю валидацию, иначе я применяю валидацию.

Есть ли способ в Symfony2 (или полный PHP) узнать, совпадает ли отправленная форма с первоначальной?

1

Решение

Давайте предположим, что ваша форма связана с сущностью MyEntityв вашем контроллере вам нужно скопировать ваш оригинальный объект, позвольте форме обработать запрос, затем сравните ваши объекты:

public function aRouteAction(Request $request, MyEntity $myEntity)
{
$entityFromForm = clone $myEntity;
// you need to clone your object, because since PHP5 a variable contains a reference to the object, so $entityFromForm = $myEntity wouldn't work

$form = $this->createForm(new MyFormType(), $entityFromForm);
$form->handleRequest($request);

if($entityFromForm == $myEntity) {
// redirect when no changes
}

if($form->isValid()) {
// redirect when there are changes and form submission is valid
}
else {
// return errors
}
}

Для клонирования объекта, пожалуйста, обратитесь к Руководство по PHP.

1

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

Других решений пока нет …

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