Symfony使用表单验证实体

时间:2016-10-21 17:17:20

标签: php forms symfony

    $userData = (new User())
        ->setPersonCode(123)
        ->setPhone('+470002342342342');

    $userForm = $this->toolbar->getForm(UserType::class, $userData);

我是从设置数据的实体类创建表单。如果现在我尝试使用:

$userForm->isValid();

我收到true,因为没有提交表单数据,我如何进行验证,而无需手动设置数据以进行表单和提交?

2 个答案:

答案 0 :(得分:2)

如果您不想向表单提交数据,请完全跳过表单;直接使用Validator服务:

<?php

// (Assuming you're in a controller, otherwise inject the validator some other way.)

$userData = (new User())
    ->setPersonCode(123)
    ->setPhone('+470002342342342');

$validator = $this->get('validator');
$errors    = $validator->validate($userData);
$isValid   = count($errors) === 0;

答案 1 :(得分:0)

您的问题措辞有点奇怪,我不确定您想要什么,如果您想手动设置上述数据,请调用$ form-&gt; sumbit()传递用户数据。

$userData = (new User())
    ->setPersonCode(123)
    ->setPhone('+470002342342342');

$userForm = $this->toolbar->getForm(UserType::class);
$userForm->sumbit($userData);
if(!$userForm->isValid()){
    // handle errors
}

如果您希望让用户在表单上提交数据,请执行以下操作:

public function createUserAction(Request $request)
{
    $userForm = $this->toolbar->getForm(UserType::class);
    $userForm->handleRequest();
    if(!$userForm->isValid()){
        // handle errors
    }
}

$userForm->handleRequest();将处理从页面上的表单提交的数据。