检测表单验证
Detection Form Validation
我有一个动态表格。
例如,如果有的话,我的表单包含 FormType1,否则我的表单包含 FormType2 或 FormType3 ....
我会检测我的表单是否被修改。
如果我的表单已完成,我将应用 valid()
方法,如果表单中存在错误 return 或者如果没有错误,我将应用重定向。
我知道怎么做。
但是,如果我的表单未经修改就提交了(没有新值)我想应用另一个未经验证的重定向因为对于必填字段,我的验证将 return 为假。
我无法测试是否所有值都为空,因为在表单中可能有组合框或布尔值,或初始值,...
我有一个解决方案 javascript 和两个提交按钮。
如果按钮提交的值为 'just_redirection' 我不应用验证,否则我应用验证。
在 Symfony2(或完整 PHP)中有没有办法知道提交的表单是否与初始表单相同?
假设您的表单与实体绑定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。
我有一个动态表格。
例如,如果有的话,我的表单包含 FormType1,否则我的表单包含 FormType2 或 FormType3 ....
我会检测我的表单是否被修改。
如果我的表单已完成,我将应用 valid()
方法,如果表单中存在错误 return 或者如果没有错误,我将应用重定向。
我知道怎么做。
但是,如果我的表单未经修改就提交了(没有新值)我想应用另一个未经验证的重定向因为对于必填字段,我的验证将 return 为假。
我无法测试是否所有值都为空,因为在表单中可能有组合框或布尔值,或初始值,...
我有一个解决方案 javascript 和两个提交按钮。
如果按钮提交的值为 'just_redirection' 我不应用验证,否则我应用验证。
在 Symfony2(或完整 PHP)中有没有办法知道提交的表单是否与初始表单相同?
假设您的表单与实体绑定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。