【发布时间】:2014-09-01 16:02:42
【问题描述】:
我已经根据文档安装了 SonataUserBundle,一切正常。除了我无法添加自定义验证规则。
我的理解是应该将新规则添加到新的验证组中,然后更新 config.yml 以告诉 SonataUserBundle(或 FosUserBundle)将新规则添加到验证序列中。
我已经以各种方式尝试过这个,但新规则似乎根本没有被采纳......
这是我正在使用的配置...
(为了这个例子,我只是想给一个新的 foo 字段添加一个 NotNull 约束。实际上我希望看到这么多的工作,然后添加更多的验证规则。)
我已将 foo 字段添加到 Application\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml 并且一切正常,将 foo 字段添加到 User.php 类。
# in Application\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml
...
<field name="foo" type="string" length="100" nullable="true" />
...
在 User.php 中,我们拥有带有 getter 和 setter 的属性:
// In Application\Sonata\UserBundle\Entity\User.php
// ...
/**
* @var string
*/
private $foo;
/**
* Set foo
*
* @param string $foo
* @return User
*/
public function setFoo($foo)
{
$this->foo = $foo;
return $this;
}
/**
* Get foo
*
* @return string
*/
public function getFoo()
{
return $this->foo;
}
// ...
然后我将新的验证规则添加到我的项目现有的validation.yml 文件中:
Application\Sonata\UserBundle\Entity\User:
properties:
foo:
- NotNull: { groups: [CustomGroup] }
(请注意,我也尝试在 Application\Sonata\UserBundle\Resources\config 中创建一个 validation.yml 和 validation.xml 文件,但这似乎没有任何区别。)
在 config.yml 中,我告诉 SonataUserBundle 使用我的新 CustomGroup 进行验证:
sonata_user:
# ...
profile:
form:
validation_groups: [CustomGroup, Profile, Default]
(请注意,我也尝试在 fos_user 级别(fos_user.profile.form.validation_groups: [CustomGroup, Profile, Default])添加验证组并添加sonata_user.profile.register.form.validation_groups: [CustomGroup, Registration, Default],但无济于事。)
为了完整起见,这里是添加到 UserAdmin.php 的字段:
// In Application\Sonata\UserBundle\Admin\UserAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with('General')
// ...
->add('foo', null, array('required' => false))
->end()
;
}
那么...我错过了什么? UserAdmin 表单与“个人资料”表单不同吗? (虽然我也尝试过更新注册表设置)还是在其他地方设置验证规则?
希望我只是错过了一些小事!
提前致谢,
C
【问题讨论】:
-
我其实也有同样的问题。尝试了一堆我能找到的不同“解决方案”,但没有任何效果。你有什么办法吗?
-
对我来说同样的问题。在此处创建票证:github.com/sonata-project/SonataUserBundle/issues/611
-
如果您的 Application\Sonata\UserBundle\Resources\config\validation.yml(或 xml)包含错误,您的应用程序会抱怨吗?
-
@DiegoFerri 是的,确实如此
-
问题不同,但接受的解决方案与您的方法非常相似。 stackoverflow.com/questions/15501569/…
标签: validation symfony fosuserbundle sonata-admin sonata-user-bundle