我有一个Symfony FOSUserBundle,我正在使用我的Symfony2应用程序。我遇到了一个问题,我需要帮助找到解决方案,因为我不知道它为什么会出现。安装后,我已经测试了注册和登录,但是现在当我尝试重置密码时,它给了我一个错误“选项”值“在约束Symfony \ Bridge \ Doctrine \ Validator \ Constraints \ UniqueEntity中不存在” 。我没有修改symfony2供应商类,我确信我没有向FOSUserBundle添加任何其他内容来改变它的行为。这是我的FOSUserBundle配置:
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Main\BundleName\Entity\User
service:
mailer: fos_user.mailer.twig_swift
registration:
confirmation:
enabled: true
from_email:
address: ....some email address here
sender_name: The senders name
这是我的实体类,我已经截断了setter和getter来减少这篇文章的篇幅: 命名空间Main \ BundleName \ Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* User
*
* @ORM\Table(name="User")
* @ORM\Entity
* @UniqueEntity("email", message="A user with the specified email already exists")
* @UniqueEntity("username", message="A user with the specified username already exists")
*/
class User extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=255, nullable=false)
*/
protected $password;
/**
* @var string
*/
protected $salt;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255, nullable=false)
*/
private $firstName;
/**
* @var string
*
* @ORM\Column(name="last_name", type="string", length=200, nullable=true)
*/
private $lastName;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=200, nullable=true)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="thumbnail", type="string", length=200, nullable=true)
*/
// Getters and Setters ...truncated ....
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* @param string $username
* @return User
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set password
*
* @param string $password
* @return User
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
}
有关如何解决此错误的任何想法?
答案 0 :(得分:1)
我认为问题出在uniqueEntity声明
上您应该使用@UniqueEntity(fields = "email", message="A message")
代替@UniqueEntity("email", message="A message")
。
当您将多个参数传递给UniqueEntity注释时,您应该声明每个参数。仅当有一个参数时,您才能使用@UniqueEntity("email")
。
希望它有所帮助。
最好的关注。
答案 1 :(得分:1)
我在从Symfony 2.4降级到2.3之后清除缓存时遇到了类似的错误。
[Symfony的\元器件\验证\异常\ InvalidOptionsException]
约束Symfony \ Component \ Validator \ Constraints \ Regex
@Benjamin Lazarecki的回答帮助我找到了解决方案
当我在Symfony2.4时,这个注释不是问题:
@Assert\Regex("/^[0-9]{4}(?:-[0-9]{3})?$/", match=true, message="Format XXXX-XXX")
但是在降级之后,似乎我需要在声明下面的注释模式时明确:
@Assert\Regex(pattern="/^[0-9]{4}(?:-[0-9]{3})?$/", match=true, message="Format XXXX-XXX")