$userData = (new User())
->setPersonCode(123)
->setPhone('+470002342342342');
$userForm = $this->toolbar->getForm(UserType::class, $userData);
我是从设置数据的实体类创建表单。如果现在我尝试使用:
$userForm->isValid();
我收到true
,因为没有提交表单数据,我如何进行验证,而无需手动设置数据以进行表单和提交?
答案 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();
将处理从页面上的表单提交的数据。