gpt4 book ai didi

symfony - Symfony 验证器的注释返回 "annotation was never imported exception"

转载 作者:行者123 更新时间:2023-12-04 09:26:05 25 4
gpt4 key购买 nike

我正在尝试在 Symfony Controller 上使用验证器服务,尤其是 uniqueEntity约束来检查具有相同 id 的对象是否已经在数据库中。我已经成功使用了 UUID之前对同一项目的验证器的约束,也使用注释。出于这个原因,使用相同的方法不起作用似乎很奇怪。
我的注释实体如下所示:

 <?php
//src/Entity/Usuarios.php

namespace App\Entity;

use App\Repository\UsuariosRepository;
use Doctrine\ORM\Mapping as ORM;

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass=UsuariosRepository::class)
* @UniqueEntity("idUsuario")
*/
class Usuarios
{
/**
* @ORM\Id() @ORM\Column(name="idUsuario",type="integer", unique=true)
* @Assert\IdUsuario
*/
private $idUsuario;

\** etc.**\

?>
我的 Controller 看起来像这样:
//src/Entity/Usuarios.php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpClient\HttpClient;
use Doctrine\ORM\EntityManagerInterface;


use App\Entity\Empleados;
use App\Entity\Productos;
use App\Entity\ProductoOrden;
use App\Entity\Ordenes;
use App\Entity\Usuarios;
use App\Entity\Ventas;
use App\Entity\Periodos;


require_once('/Users/jaumaf/clases/2020-1/incentivos/src/testData.php');

use const testData\USUARIOS_T;
use const testData\EMPLEADOS_T;
use const testData\PRODUCTOS_T;
use const testData\ORDENES_T;
use const testData\PERIODOS_T;
use const testData\VENTAS_T;

use Psr\Log\LoggerInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;



class LoadDataController extends AbstractController
{
/**
* @Route("/load/data", name="load_data")
*/
public function index(LoggerInterface $logger, ValidatorInterface $validator) {

//los json estan en testData.php

$usuariosArray = json_decode(USUARIOS_T, TRUE);
$empleadosArray = json_decode(EMPLEADOS_T,TRUE);
$productosArray = json_decode(PRODUCTOS_T,TRUE);
$ordenesPorEmpleadoArray = json_decode(ORDENES_T,TRUE);
$periodosArray = json_decode(PERIODOS_T, TRUE);
$ventasPorVendedorArray= json_decode(VENTAS_T, TRUE);

$logger->info('Test constants loaded');


$entities = $this -> mapArraysToObjects($usuariosArray, $empleadosArray, $productosArray, $ordenesPorEmpleadoArray,$ventasPorVendedorArray,$periodosArray);
$logger->info('Entities loaded to memory');

$cont = 0;
$logtable = $this -> logLoadedEntities($cont, $entities);


// Persistencia
$entityManager = $this->getDoctrine()->getManager();

$logger->info('ORM loaded');


// Validator test

$usuario = $entities[0];


$validation = $validator -> validate($usuario);

// this should make the validator throw a uniqueEntity exception, but it throws an annotation exception.
我得到的异常(exception)是:
[Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\IdUsuario" in property App\Entity\Usuarios::$idUsuario was never imported. Did you maybe forget to add a "use" statement for this annotation?

我试过添加 use Symfony\Component\Validator\Constraints\IdUsuario 的声明在我的 Controller 上,因为异常消息似乎暗示了(但是,Symfony 指南没有提到这一步,所以它应该是不必要的)。但它显示了完全相同的错误。
我还尝试进行学说迁移,希望注释使用的元数据以某种方式自我更新,但它在命令行中引发了相同的异常。

bash-3.2$ php bin/console make:migration

In AnnotationException.php line 54:

[Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\IdUsu
ario" in property App\Entity\Usuarios::$idUsuario was never imported. Did you may
be forget to add a "use" statement for this annotation?

我是 php 新手,我不太了解注释是如何工作的。但我遵循了 https://symfony.com/doc/current/reference/constraints/UniqueEntity.html 中的指南.我很确定我已经彻底检查了语法,正如我所说,它以前在不同的约束下工作过。此外,当我调用 validate() 时, Controller 会抛出异常。功能。也许我在 Controller 端或 Symfony 框架系统上缺少一些我不知道的东西,这可能会影响验证服务的行为?
我将不胜感激任何指导。在此期间,我将尝试将头放在注释上。
谢谢

最佳答案

删除注释 @Assert\IdUsuario来自类 Usuarios您是从 https://symfony.com/doc/current/reference/constraints/UniqueEntity.html 复制粘贴的
它与 UniqueEntity 验证无关。它只是检查该字段是一个有效的电子邮件。

关于symfony - Symfony 验证器的注释返回 "annotation was never imported exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63003593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com