我有动态表单。
例如,如果有什么,我的表单包含FormType1,否则我的表单包含FormType2或FormType3 ....
我会检测我的表格是否被修改
如果我的表单已完成,我应用的是valid()
方法,如果在表单中返回错误,或者如果没有错误,我会应用重定向。
我知道该怎么做。
但是,如果我的fom未经修改提交(没有新值)我想应用其他重定向而不进行验证因为我的验证将返回false并带有必填字段
我无法测试所有值是否为null,因为在形式上可能有组合框或布尔值,或初始值,...
我有一个带有javascript和两个提交按钮的解决方案 如果按钮提交的值是'just_redirection',我不应用验证,否则我应用验证。
在Symfony2(或完整的PHP)中有没有办法知道提交的表单是否与初始表单相同?
答案 0 :(得分: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 manual。