2016-11-29 1 views
0

я только что получил эту ошибку случая несоответствие между загруженными и заявленными именами классов: MyApp \ UserBundle \ Entity \ пост против MyApp \ UserBundle \ Entity \ PostSymfony 3 ошибки: несоответствие случая между загруженными и заявленными именами классов

я использую два контроллера, чтобы выполнить конкретную операцию удаления и вернуться к старой странице

здесь код

<a href="{{ path('DeleteComment',{'idc':comment.id}) }}"></a> 
           <a href="{{ path('DeleteComment',{'idc':comment.id}) }}"> <i 
              class="icon-trash"></i>Delete</a> 

здесь моя кнопка является код моего Routing в:

get_view_post: 
path:  /blog/get/one/post/{id}/ 
defaults: { _controller: "MyAppBlogBundle:Blog:getpost" } 
DeleteComment: 
path:  /blog/post/comment/delete/{idc}/ 
defaults: { _controller: "MyAppBlogBundle:Blog:DeleteComment" } 

вот мой код контроллера:

public function DeleteCommentAction($idc) 
{ 

    $em = $this->getDoctrine()->getManager(); 
    $comment = $em->getRepository('MyAppUserBundle:PostComment')->find($idc); 
    $idPost =$comment->getIdPost(); 


    $em->remove($comment); 
    $em->flush(); 


    return $this->redirectToRoute("get_view_post", array('id' => $idPost)); 
} 


public function getpostAction($id) 
{ 
    $user = $this->getUser(); 
    $idu = $user->getId(); 
    $em = $this->getDoctrine()->getManager(); 
    $em1 = $this->getDoctrine()->getManager(); 
    $post = $em->getRepository('MyAppUserBundle:Post')->find($id); 
    $idPost=$post->getId(); 
    $comment = $em1->getRepository('MyAppUserBundle:PostComment')->findBy(array('idPost' => $idPost)); 
    return $this->render('MyAppBlogBundle::afficherPostAvecComment.html.twig', array('posts' => $post,'comments'=>$comment,'idu'=>$idu)); 

} 

я объявляю мои сущности, как это:

use MyApp\UserBundle\Entity\Post; 

использования MyApp \ UserBundle \ Entity \ PostComment;

Вот мой Entity

namespace MyApp\UserBundle\Entity; 

использовать Doctrine \ ORM \ Mapping в ОРМ; /** * @ORM \ Entity * @ORM \ Table (имя = "пост") */ класс Post {

/** 
* @var integer 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

/** 
* @var string 
* @ORM\Column(name="titre", type="string", length=100, nullable=false) 
*/ 
private $titre; 
/** 
* @var string 
* @ORM\Column(name="contenu", type="string", length=250, nullable=false) 
*/ 
private $contenu; 

/** 
* @var \DateTime 
* @ORM\Column(name="dateajout", type="datetime", nullable=true) 
*/ 
private $dateajout ; 

/** 
* @var integer 
* @ORM\ManyToOne(targetEntity="User") 
* @ORM\JoinColumn(name="id_utilisateur",referencedColumnName="id") 
*/ 
private $idUser; 

/** 
* @var integer 
* @ORM\Column(name="nbLike", type="integer", nullable=true) 
*/ 
private $nbLike =0; 
/** 
* @var integer 
* @ORM\Column(name="nbDislike", type="integer", nullable=true) 
*/ 
private $nbDislike=0; 
/** 
* @var integer 
* @ORM\Column(name="nbSignal", type="integer", nullable=true) 
*/ 
private $nbSignal=0; 
+1

сообщение эээ о посте против Post. Не имеет никакого отношения к вашим контроллерам. Если бы я должен был догадаться, учитывая ваше довольно образное соглашение об именах, у вас есть классный пост. Или, может быть, опечатка в вашем отношении к PostComment. И, конечно же, убедитесь, что ваш кеш очищен, если вы редактировали материал сущности. – Cerad

+0

Я изменил имя каждого массива на «p» и все еще получаю ту же проблему, я могу показать вам другие части моего кода, если вы хотите его проверить. – petrucci

+0

Измените код в своем вопросе, чтобы показать объект Сообщение, должно быть проблема. –

ответ

1

я сделал некоторые изменения в моем коде, как я вижу, что мои IDE не могла отличить между Post, PostComment и моим сообщением в массиве или, кроме того, его собственным методом recuparation «_POST». вы можете видеть из-за ошибки выше, что она основана на нерешительности между Post и post, если вы используете последнюю версию Symfony, попробуйте просмотреть весь проект и изменить имена ваших атрибутов или классов, верьте или нет, он создает некоторые трудности для IDE, когда ваш проект становится все больше

и вот что сделал ошибку ушел:

  • старый

    /**

    • @var целого
    • @ORM \ ManyToOne (targetEntity = "пост")
    • @ORM \ JoinColumn (имя = "id_post", referencedColumnName = "идентификатор") */ частного $ idPost;
  • новый

    /**

    • @var целое
    • @ORM \ ManyToOne (targetEntity = "Сообщение")
    • @ORM \ JoinColumn (имя = "id_post ", referendedColumnName =" id ") */ private $ idPost;

я не давал approvriate имя моего лица, поэтому, когда я делать какие-либо действия, основываясь на внешних ключей, то IDE не найти Entity ссылки

, если вы используете и старая версия Symfony, вы должны добавить строку кода в конфигурации некоторых файла вы можете иметь лучшее объяснение здесь:

Symfony2 error : Case mismatch between loaded and declared class names:

Смежные вопросы