我无法在实体属性中使用Assert语句在Symfony2中验证我的表单。
这是我的实体:
use Symfony\Component\Validator\Constraints as Assert;
class AqquiringRequestData
{
/**
* @Assert\IsTrue(message="Необходимо принять условия")
* @Assert\NotNull(message="Необходимо принять условия")
*/
public $checkacc;
这是我的表单构建器:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('checkacc', 'checkbox', array(
'label' => 'I agree',
'required' => false,
'validation_groups' => array('Default'),
));
}
这是控制器动作:
$formData = new AqquiringRequestData();
$flow = $this->get('cib.form.flow.aqquiringreq');
$flow->bind($formData);
$form = $flow->createForm();
if ($flow->isValid($form)) {
...
当我尝试使用未选中的复选框提交表单时,它已成功提交。我做错了什么?
谢谢!
答案 0 :(得分:2)
默认情况下,未启用用于验证的注释阅读器。您可以在上面的链接中阅读如何更改它。
您的捆绑包使用yml
配置格式,因此我建议您以yml
格式记下验证规则。
这看起来像这样:
# src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\AqquiringRequestData:
properties:
checkacc:
- NotNull: ~
阅读本文:http://symfony.com/doc/current/book/validation.html(注意:示例有不同配置格式的多个标签)
答案 1 :(得分:0)
你不应该处理请求 $ form-> handleRequest($ request)或$ form-> bind($ formData)。
$formData = new AqquiringRequestData();
$flow = $this->get('cib.form.flow.aqquiringreq');
$form = $flow->createForm();
$form->handleRequest($formData); // Your form needs to be associated with an entity some how
if ($form->isValid($form)) { // You are validating the form, right?