我有一个用户实体,它有一些独特的字段。
下面的代码向您展示了我如何定义它。
/**
* @UniqueEntity(fields={"login"}, message="UNIQUE ERROR MESSAGE")
*/
......
/**
* @var string
*
* @ORM\Column(name="login", type="string", length=255, unique=true)
*/
private $login;
开发API,我希望能够使用正确的错误消息发送正确的错误状态。
当我在数据库中插入重复的条目时,我想得到消息和一个相对于它是重复的事实的例子。 相反,我收到了SQL消息的500错误。
{
"error": {
"code": 500,
"message": "Internal Server Error",
"exception": [
{
"message": "An exception occurred while executing 'INSERT INTO .... \n\nSQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint \"uniq_1d1c63b3aa08cb10\"\nDETAIL: Key (login)=(bast) already exists.",
"class": "Doctrine\\DBAL\\DBALException",
"trace": [
这是我获得500的地方。
$test = new Utilisateur();
$test->setLogin('test');
$manager = $this->getDoctrine()->getManager();
$manager->persist($test);
$manager->flush();
如何检索消息" UNIQUE ERROR MESSAGE" ?
答案 0 :(得分:2)
Symfony验证器服务可以直接用于验证定义了验证约束的任何对象。例如,在控制器中:
$validator = $this->get('validator');
$errors = $validator->validate($test);
要在服务中执行验证,您可以将验证器服务传递到您的服务中。