检测表格验证

时间:2016-09-02 08:14:03

标签: php symfony craueformflow

我有动态表单。

例如,如果有什么,我的表单包含FormType1,否则我的表单包含FormType2或FormType3 ....

我会检测我的表格是否被修改 如果我的表单已完成,我应用的是valid()方法,如果在表单中返回错误,或者如果没有错误,我会应用重定向。
我知道该怎么做。

但是,如果我的fom未经修改提交(没有新值)我想应用其他重定向而不进行验证因为我的验证将返回false并带有必填字段

我无法测试所有值是否为null,因为在形式上可能有组合框或布尔值,或初始值,...

我有一个带有javascript和两个提交按钮的解决方案 如果按钮提交的值是'just_redirection',我不应用验证,否则我应用验证。

在Symfony2(或完整的PHP)中有没有办法知道提交的表单是否与初始表单相同?

1 个答案:

答案 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