2016-06-10 85 views
1

我創建從現有的實體CRUD,一切都很好,直到我去看到的結果,在這裏我得到了以下錯誤:的Symfony無法加載FieldVote

(使用的Symfony 3)

嘗試從命名空間 「的Symfony \分量\安全\的Acl \選民」 裝入類 「FieldVote」。 你忘記了另一個命名空間的「使用」語句嗎? 500內部服務器錯誤 - ClassNotFoundException的

我不知道該怎麼辦這個問題,因爲沒有一個似乎永遠有這個問題,也沒有在那裏找到什麼原因造成的。

無論如何,這裏是從我的實體片段和我的控制器:

MissionBundle.php

<?php 

namespace MissionBundle\Controller; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use MissionBundle\Entity\Mission; 
use MissionBundle\Form\MissionType; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; 

/** 
* Mission controller. 
* 
* @Route("/mission") 
*/ 
class MissionController extends Controller 
{ 
    /** 
    * Lists all Mission entities. 
    * 
    * @Route("/", name="mission_index") 
    * @Method("GET") 
    */ 
    public function indexAction() 
    { 
     $em = $this->getDoctrine()->getManager(); 

     $missions = $em->getRepository('MissionBundle:Mission')->findAll(); 

     return $this->render('mission/index.html.twig', array(
      'missions' => $missions, 
     )); 
    } 

    /** 
    * Creates a new Mission entity. 
    * 
    * @Route("/new", name="mission_new") 
    * @Security("has_role('ROLE_RECRUTEUR') or has_role('ROLE_RESPONSABLE')") 
    * @Method({"GET", "POST"}) 
    */ 
    public function newAction(Request $request) 
    { 
     $mission = new Mission(); 
     $form = $this->createForm('MissionBundle\Form\MissionType', $mission); 
     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($mission); 
      $em->flush(); 

      return $this->redirectToRoute('mission_show', array('id' => $mission->getId())); 
     } 

     return $this->render('mission/new.html.twig', array(
      'mission' => $mission, 
      'form' => $form->createView(), 
     )); 
    } 

    /** 
    * Finds and displays a Mission entity. 
    * 
    * @Route("/{id}", name="mission_show") 
    * @Method("GET") 
    */ 
    public function showAction(Mission $mission) 
    { 
     $deleteForm = $this->createDeleteForm($mission); 

     return $this->render('mission/show.html.twig', array(
      'mission' => $mission, 
      'delete_form' => $deleteForm->createView(), 
     )); 
    } 

    /** 
    * Displays a form to edit an existing Mission entity. 
    * 
    * @Route("/{id}/edit", name="mission_edit") 
    * @Security("has_role('ROLE_RECRUTEUR') or has_role('ROLE_RESPONSABLE')") 
    * @Method({"GET", "POST"}) 
    */ 
    public function editAction(Request $request, Mission $mission) 
    { 
     $deleteForm = $this->createDeleteForm($mission); 
     $editForm = $this->createForm('MissionBundle\Form\MissionType', $mission); 
     $editForm->handleRequest($request); 

     if ($editForm->isSubmitted() && $editForm->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($mission); 
      $em->flush(); 

      return $this->redirectToRoute('mission_edit', array('id' => $mission->getId())); 
     } 

     return $this->render('mission/edit.html.twig', array(
      'mission' => $mission, 
      'edit_form' => $editForm->createView(), 
      'delete_form' => $deleteForm->createView(), 
     )); 
    } 

    /** 
    * Deletes a Mission entity. 
    * @Security("has_role('ROLE_RECRUTEUR') or has_role('ROLE_RESPONSABLE')") 
    * @Route("/{id}", name="mission_delete") 
    * @Method("DELETE") 
    */ 
    public function deleteAction(Request $request, Mission $mission) 
    { 
     $form = $this->createDeleteForm($mission); 
     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 
      $em->remove($mission); 
      $em->flush(); 
     } 

     return $this->redirectToRoute('mission_index'); 
    } 

    /** 
    * Creates a form to delete a Mission entity. 
    * @Security("has_role('ROLE_RECRUTEUR') or has_role('ROLE_RESPONSABLE')") 
    * @param Mission $mission The Mission entity 
    * 
    * @return \Symfony\Component\Form\Form The form 
    */ 
    private function createDeleteForm(Mission $mission) 
    { 
     return $this->createFormBuilder() 
      ->setAction($this->generateUrl('mission_delete', array('id' => $mission->getId()))) 
      ->setMethod('DELETE') 
      ->getForm() 
     ; 
    } 
} 

Mission.php(實體)

<?php 
// src/MissionBundle/Entity/Mission.php 
namespace MissionBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
*/ 
Class Mission{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    private $intitule; 

    /** 
    * @ORM\Column(type="text") 
    */ 
    private $description; 

    /** 
    * @ORM\Column(type="datetime") 
    */ 
    private $dateDepot; 

    /** 
    * @ORM\Column(type="date") 
    */ 
    private $dateDebut; 

    /** 
    * @ORM\Column(type="date") 
    */ 
    private $dateFin; 

    /** 
    * @ORM\Column(type="boolean") 
    */ 
    private $visibilite; 

    /** 
    * @ORM\Column(type="boolean") 
    */ 
    private $isConnected; 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set intitule 
    * 
    * @param string $intitule 
    * 
    * @return Mission 
    */ 
    public function setIntitule($intitule) 
    { 
     $this->intitule = $intitule; 

     return $this; 
    } 

    /** 
    * Get intitule 
    * 
    * @return string 
    */ 
    public function getIntitule() 
    { 
     return $this->intitule; 
    } 

    /** 
    * Set description 
    * 
    * @param string $description 
    * 
    * @return Mission 
    */ 
    public function setDescription($description) 
    { 
     $this->description = $description; 

     return $this; 
    } 

    /** 
    * Get description 
    * 
    * @return string 
    */ 
    public function getDescription() 
    { 
     return $this->description; 
    } 

    /** 
    * Set dateDepot 
    * 
    * @param \DateTime $dateDepot 
    * 
    * @return Mission 
    */ 
    public function setDateDepot($dateDepot) 
    { 
     $this->dateDepot = $dateDepot; 

     return $this; 
    } 

    /** 
    * Get dateDepot 
    * 
    * @return \DateTime 
    */ 
    public function getDateDepot() 
    { 
     return $this->dateDepot; 
    } 

    /** 
    * Set dateDebut 
    * 
    * @param \DateTime $dateDebut 
    * 
    * @return Mission 
    */ 
    public function setDateDebut($dateDebut) 
    { 
     $this->dateDebut = $dateDebut; 

     return $this; 
    } 

    /** 
    * Get dateDebut 
    * 
    * @return \DateTime 
    */ 
    public function getDateDebut() 
    { 
     return $this->dateDebut; 
    } 

    /** 
    * Set dateFin 
    * 
    * @param \DateTime $dateFin 
    * 
    * @return Mission 
    */ 
    public function setDateFin($dateFin) 
    { 
     $this->dateFin = $dateFin; 

     return $this; 
    } 

    /** 
    * Get dateFin 
    * 
    * @return \DateTime 
    */ 
    public function getDateFin() 
    { 
     return $this->dateFin; 
    } 

    /** 
    * Set visibilite 
    * 
    * @param boolean $visibilite 
    * 
    * @return Mission 
    */ 
    public function setVisibilite($visibilite) 
    { 
     $this->visibilite = $visibilite; 

     return $this; 
    } 

    /** 
    * Get visibilite 
    * 
    * @return boolean 
    */ 
    public function getVisibilite() 
    { 
     return $this->visibilite; 
    } 

    /** 
    * Set isConnected 
    * 
    * @param boolean $isConnected 
    * 
    * @return Mission 
    */ 
    public function setIsConnected($isConnected) 
    { 
     $this->isConnected = $isConnected; 

     return $this; 
    } 

    /** 
    * Get isConnected 
    * 
    * @return boolean 
    */ 
    public function getIsConnected() 
    { 
     return $this->isConnected; 
    } 
} 

有ISN沒有提及代碼中的投票或任何內容,所以我不知道需要加載什麼FieldVote,或者什麼阻止它加載它。 有沒有人有想法? 我必須準確,如果我去的任務/新,或任務/ {ID}或什麼的,它完美的罰款。

謝謝你提前

回答

0

完全看起來像symfony核心bug對我來說。有分支3 *

其實在https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Security任何ACL目錄,在2.7移除這個目錄中,所以沒有部件後2.8應該使用它。也許你應該把它報告給SensioLabs。

爲了擺脫這種錯誤的,你能避免使用@security註釋,並使用安全服務,而不是和試驗授權控制器本身內部:

if (false === $this->get('security.authorization_checker')->isGranted('ROLE_RECRUTEUR')) { 
    .... 
}