2013-11-29 3 views
0

Итак, я пытаюсь создать новый объект класса «Engineering_Detail» внутри моего пользовательского действия «next», проблема в том, что я использую "Use ....\Entity\Engineering_Detail". бросает эту ошибку на линии я делаю $detail = new Engineering_Detail();Symfony 2 Исключение: класс не найден в контроллере

FatalErrorException: Error: Class 'Mine\Bundle\EngMgmtBundle\Entity\Engineering_Detail' not found in C:\xampp\htdocs\EngMgmt\src\Mine\Bundle\EngMgmtBundle\Controller\EngineeringController.php line 403

линия 403 является $detail = new Engineering_Detail();

Вот важные биты контроллера:

<?php 

namespace Mine\Bundle\EngMgmtBundle\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 Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use Mine\Bundle\EngMgmtBundle\Entity\Engineering; 
use Mine\Bundle\EngMgmtBundle\Form\EngineeringType; 
use Mine\Bundle\EngMgmtBundle\Entity\Engineering_Detail; 
/** 
* Engineering controller. 
* 
* @Route("/engineering") 
*/ 
class EngineeringController extends Controller 
{ 
/** 
    * Updates a Engineering entity. 
    * 
    * @Route("/{id}/next/", name="engineering_next") 
    * @Method("POST") 
    * @Template("MineEngMgmtBundle:Engineering:update.html.twig") 
    */ 
    public function nextAction(Request $request, $id){ 
     $em = $this->getDoctrine()->getManager(); 
     $entity = $em->getRepository('MineEngMgmtBundle:Engineering')->find($id); 

     $current_form = $this->getForm($entity->getStatus()->getInternalOrder()); 
     $current_form->handleRequest($request); 

     $detail = new Engineering_Detail(); 

     if ($current_form->isValid()) { 

      $data = $current_form->getData(); 

      switch ($entity->getStatus()->getInternalOrder()){ 

       case 1: 

       if (($data["sitesurvey"]) == 'n'){ 
        $status = $em->getRepository('MineEngMgmtBundle:Status')->findBy(array('internalOrder' => 8)); 
        $next_form = $this->getForm($entity->getStatus()->getInternalOrder()); 
       }else{ 
        $status = $em->getRepository('MineEngMgmtBundle:Status')->find(2); 
        $next_form = $this->getForm($entity->getStatus()->getInternalOrder()); 
       }  

        break; 

       default: 
        $status = $em->getRepository('MineEngMgmtBundle:Status')->findBy(array('internalOrder' => $entity->getStatus()->getInternalOrder()+1)); 
        $next_form = $this->getForm($entity->getStatus()->getInternalOrder()); 
        break; 
      } 

        $detail->setEngineering($entity); 
        $detail->setFromStatus($entity->getStatus()); 
        $detail->setToStatus($status); 
        $detail->setUpdatedDate(new \DateTime()); 
        $detail->setUser($this->get('security.context')->getToken()->getUser()); 
        $detail->setComments($data["comments"]); 
        $entity->setStatus($status); 
        $em->flush(); 
     } 
      return array(
         'entity' => $entity, 
         'form' => $next_form->createView() 
      ); 
    } 

Я уже проверил this и подтвердил, но все выглядит нормально. Этот объект был создан с использованием инструментов внутри консоли SF2. Что я делаю не так?

Примечание: Я уже удалил кэш

EDIT:

Пробовал со всеми другими лицами, с использованием того же пространства имен и просто изменить имя субъекта, и декларирование объектов, кажется, вопрос это просто с объектами с _ от их имени.

+0

вы уверены, что пространство имен корректно определено в классе Engineering_Detail? Кроме того, ваше имя файла php совпадает с именем класса? (например, Engineering_Detail.php) – Sehael

+0

Это одно и то же имя, а пространство имен для класса Engineering_Detail - это пространство имен Mine \ Bundle \ EngMgmtBundle \ Entity; – Splendonia

+1

ли ваш конструктор класса Engineering_Detail ожидает параметр, который может отсутствовать? Если это проблема, которая может вызвать проблему, можете ли вы попробовать тот же класс без _? – Sehael

ответ

0

Fixed вычеркиванием _ во имя объекта и изменения всех его вхождений

4

Вы смешиваете пространство имен PSR и имена классов. Причина, по которой его невозможно найти, заключается в том, что ваш Entity должен быть вызван EngineeringDetail, который будет правильно найден автозагрузчиком.

+0

Я должен дать вам очки, но я, правда, был очень груб в списке проблем на github. Вы могли бы сказать это лучше. Как, черт возьми, я знаю, что это плохая практика? – Splendonia

+0

жаль, что это неправильно, не значит, вы могли бы использовать список рассылки, вот и все. – cordoval

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