Symfony不在iphone上验证

时间:2016-04-06 16:18:03

标签: android iphone symfony

我已使用此代码设置实体

/**
 * @Assert\Length(
 *      min = 20,
 *      max = 2000,
 *      minMessage = "message.min_length",
 *      maxMessage = "message.max_length"
 * )
 */
protected $message;

当我使用桌面导航器时,当消息小于20时拒绝发送,但是当在iphone或平板电脑(android)上时,消息被发送,甚至是空的。该领域是textarea。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

<强>更新

根据symfony文档,断言长度假定为NULL&amp;空字符串为有效,因此它传递的原因(http://symfony.com/doc/current/reference/constraints/Length.html#min)。

请添加Assert \ NotBlank(),这将验证空字符串

-

symfony表单构建器将执行的操作是将表单验证选项添加到表单元素,例如:

<input name="my_field" required>

桌面浏览器将验证是否需要此表单元素(客户端)&amp;如果为空,则阻止提交表单。在移动设备上,他们不会自动验证表单(我仍然要找到这个原因......?),因此您需要添加一些javascript表单验证,以防止表单在移动设备/平板电脑上无效时提交设备

请确保您的表单正确映射到实体类:

// AppBundle/Form/EntityForm.php

<?php

namespace AppBundle\Form;

class EntityForm extends AbstractType
{
    // ...

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'AppBundle\Entity\MyEntity',
        ]);
    }
}

要确保symfony验证注释,请将其添加到您的app / config / config.yml

# app/config/config.yml
framework:
    validation: { enable_annotations: true }