2015-03-17 5 views
1

я столкнулся следующее сообщение об ошибке:Проблема с маршрутизацией на моем Symfony2 проекта

An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "casanet_addpaperpage" as such route does not exist.") in "CasanetBundle:Admin:deliverables.html.twig" at line 38.

Вот мой контроллер:

<?php 

namespace ProjectB\CasanetBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 

use ProjectB\CasanetBundle\Entity\Paper; 
use ProjectB\CasanetBundle\Entity\Event; 
use ProjectB\CasanetBundle\Entity\Conference; 
use ProjectB\CasanetBundle\Entity\Project; 
use ProjectB\CasanetBundle\Form\PaperType; 

class AdminController extends Controller { 

public function deliverablesAction() { 
    $em = $this->getDoctrine()->getManager(); 

    $papers = $em->getRepository("CasanetBundle:Paper")->findAll(); 
    $events = $em->getRepository("CasanetBundle:Event")->findAll(); 
    $conferences = $em->getRepository("CasanetBundle:Conference")->findAll(); 
    $projects = $em->getRepository("CasanetBundle:Project")->findAll(); 

    return $this->render('CasanetBundle:Admin:deliverables.html.twig', array(
     "papers" => $papers, 
     "events" => $events, 
     "conferences" => $conferences, 
     "projects" => $projects, 
    )); 
} 

public function addpaperAction(Request $request){ 
    $paper = new Paper(); 

    $formPaper = $this->createForm(new PaperType(), $paper); 

    if($request->isMethod("POST")){ 
     $formPaper->handleRequest($request); 
     if($formPaper->isValid()){ 
      $em = $this->getDoctrine()->getManager(); 
      $paper = $formPaper->getData(); 
      $em->persist($paper); 
      $em->flush(); 
     } 
     return $this->redirectToRoute("casanet_deliverablespage"); 
    } 

    return $this->render('CasanetBundle:Admin:addpaper.html.twig', array(
     "formPaper" => $formPaper->createView(), 
    )); 

} 
}  

Вот заинтересованный маршрут в моем файле routing.yml:

casanet_addpaperpage: 
    path:  /admin/addpaper 
    defaults: { _controller: CasanetBundle:Admin:addpaper } 

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

Может ли кто-нибудь намекнуть мне на правильный путь?

EDIT: Вот заинтересованный сегмент с моей точки зрения:

<a href="{{path("casanet_addpaperpage") }}" class="btn btn-primary">Add a paper</a> 
+0

Вы импортировали файл маршрутизации пакетов в 'config/routing.yml' и попробуйте' php app/console router: debug', чтобы просмотреть ваши маршруты и подтвердить, что маршрут существует. –

+0

Он действительно появляется на консоли среди других маршрутов после запуска отладки маршрутизации, я полагаю, что она существует. – yahyaharif

ответ

0

Думаю, это потому, что ваш короткое_имя для вашего комплекта не является правильным, должно быть

casanet_addpaperpage: 
    path:  /admin/addpaper 
    defaults: { _controller: ProjectBCasanetBundle:Admin:addpaper } 
+0

Короткое имя верное, поскольку я забыл связать имя пакета с пространством имен, когда он попросил меня определить короткое имя во время генерации пакета. Другие маршруты, которые имеют одно и то же имя, также успешно работают. – yahyaharif

0

Поскольку маршрут присутствует в маршрутизаторе : debug --env = dev, то вам, вероятно, просто нужно очистить кеш.

php app/console cache:clear --env=dev 

или prod, если вы используете prod.

+0

Нет результатов:/Снят кеш и перезапустил все связанные сервисы, не повезло – yahyaharif

0

Я узнал, что случилось.

Я запустил обновление no-dev композитора и прервал его 1 день назад, и он испортился. Сегодня я обновился до Symfony 2.6.5, и он решил проблему, я полагаю. Всем спасибо!

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