我正在尝试在控制器中使用FOSUserBundle Unique验证器。正如我在validation.xml
中定义的那样,我可以选择验证我的实体的哪些属性:
<constraint name="FOS\UserBundle\Validator\Unique">
<option name="property">dni</option>
<option name="message">The value for DNI is already registered</option>
<option name="groups">
<value>AppRegistration</value>
<value>Profile</value>
<value>UpdateOldUsers</value>
</option>
</constraint>
但是当我在控制器上调用它时(this之后):
use FOS\UserBundle\Validator\Unique;
public function acceptNewTosAction(Request $request) {
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
$uniqueConstraint = new Unique(array('property' => 'dni'));
$formData = $request->request->get('old_user');
$dni = $formData['dni'];
$uniqueError = $this->get('validator')->validateValue($dni, $uniqueConstraint);
我收到此错误:
Expected argument of type FOS\UserBundle\Model\UserInterface, string given
有可能以这种方式进行吗?我应该如何在控制器中实现唯一验证器? 非常感谢。
答案 0 :(得分:0)
我意识到这应该如何。只需告诉验证组中的表单:
public function getDefaultOptions(array $options) {
return array(
'data_class' => 'Capsa\Bundle\ClubCommonBundle\Entity\User',
'validation_groups' => array('UpdateOldUsers')
);
}
然后在控制器中,检查if ($form->isValid())