Итак, я пытаюсь создать новый объект класса «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:
Пробовал со всеми другими лицами, с использованием того же пространства имен и просто изменить имя субъекта, и декларирование объектов, кажется, вопрос это просто с объектами с _ от их имени.
вы уверены, что пространство имен корректно определено в классе Engineering_Detail? Кроме того, ваше имя файла php совпадает с именем класса? (например, Engineering_Detail.php) – Sehael
Это одно и то же имя, а пространство имен для класса Engineering_Detail - это пространство имен Mine \ Bundle \ EngMgmtBundle \ Entity; – Splendonia
ли ваш конструктор класса Engineering_Detail ожидает параметр, который может отсутствовать? Если это проблема, которая может вызвать проблему, можете ли вы попробовать тот же класс без _? – Sehael