2013-04-06 2 views
0

Я, похоже, столкнулся с проблемой с Symfony 2, которую я раньше не видел (или, что более похоже, что-то действительно очевидное).Ошибка маршрутизации Symfony 2 при добавлении параметров

У меня был маршрут, который не принимал никаких параметров и отлично работал, соединившись с контроллером и отображая правильный вид. Затем я обновил маршрут принять один параметр, как так:

# Note routing 
    gibbo_dummy_notes_Add: 
     pattern: /notes/add/{notebook} 
     defaults: { _controller: GibboDummyBundle:Note:add, notebook: 0} 
     requirements: 
       _method: POST|GET 

Однако если сейчас я пытаюсь получить доступ к этому маршруту notes/add/test я получаю ошибку The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?. Если я удалю параметр, он отлично работает notes/add.

Эта настройка точно такая же, как и остальные маршруты, которые используют параметры в моем приложении.

Действие в контроллере определенно возвращает объект ответа. Если я помещаю die('test'); в начало действия и удаляю параметр из URL-адреса, я добираюсь до утверждения die и вижу «test», но если я добавлю параметр в URL-адрес, он покажет ошибку, поэтому его явно не дойдет до моего контроллера или действие при включении параметра, но насколько я могу сказать, что маршрут настроен правильно, и я не получаю ошибку с нормальным маршрутом, я бы ожидал увидеть, была ли проблема с URL-адресом.

Im запустить его в среде Dev, и я попробовал другие браузеры/очистили кэш и т.д. Действие внутри контроллера NoteController выглядит как

public function addAction($notebook) 
{ 

    $pageTitle = 'Note'; 


    $form = $this->createForm(new NoteType(), null, array(
     'validation_groups' => array('add') 
    )); 

    $request = $this->getRequest(); 

    if ($request->isMethod('POST')) { 
     $form->bind($request); 

     if ($form->isValid()) { 

      /** @var $em \Doctrine\ORM\EntityManager */ 
      $em = $this->getDoctrine()->getManager(); 

      /** @var $note Note */ 
      $note = $form->getData(); 
      $note->setNotebook(); 

      $em->persist($note); 
      $em->flush(); 

      return $this->redirect($this->generateUrl('gibbo_dummy_note_View')); 
     } 
    } 

    return $this->render('GibboDummyBundle:Note:new.html.twig', array(
     'pageTitle' => $pageTitle, 
     'form_add' => $form->createView(), 
     'selected' => 'codebooks' 
    )); 


} 

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

+2

Мое предположение было бы, чтобы он соответствовал другой маршрут для странной причине. Вы можете пойти в профилировщик, чтобы узнать, какой маршрут он сопоставил с маршрутизатором! –

+0

в корневом каталоге 'php app/console router: debug' искать маршрут и убедиться, что он идет в нужное место –

+0

Спасибо за ответ router: debug ничего не показал: gibbo_codekeeper_notes_Add POST | GET/notes/add/{notebook } –

ответ

0

Пожалуйста, добавьте код контроллера для маршрута gibbo_dummy_note_View.

Скорее всего, ваш Перенаправление заканчивается в плохой контроллер метод - тот, который не имеет return заявление

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