2012-02-26 5 views
1

В настоящее время я пытаюсь настроить параметр маршрутизации в Symfony2, поэтому /cms направит на /cms/role/view. Однако передача дефолтов не работает должным образом.По умолчанию в маршрутизации Symfony2 не передается должным образом

/src/MyProject/CMSBundle/Resources/config/routing.yml

MyProjectCMS_specific: 
pattern: /cms/{page}/{option} 
defaults: { _controller: MyProjectCMSBundle:Main:index, page: role, option: view } 
requirements: 
    _method: GET 

/src/MyProject/CMSBundle/Controller/MainController.php

<?php 
    namespace MyProject\CMSBundle\Controller; 

    use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

    class MainController extends Controller 
    { 
     public function indexAction($page, $option) 
     { 
      $response = null; 

      /* Switch statement that determines the page to be loaded. */ 

      return $response; 
     } 

    } 
?> 

Проблема заключается в том, что, когда я попытаться перейти к `LOCALHOST/app_dev.php/СМ, он дает мне следующую ошибку:

Controller "MyProject\CMSBundle\Controller\MainController::indexAction()" requires that you provide a value for the "$page" argument (because there is no default value or because there is a non optional argument after this one). 
500 Internal Server Error - RuntimeException 

Однако, если я пытаюсь посетить localhost/app_dev.php/cms/role или localhost/app_dev.php/cms/role/view, он дает мне правильную страницу. Я попытался добавить маршрут по умолчанию к /cms, но он все равно дает мне ту же ошибку. Как это возможно и как я могу это исправить?

Заранее спасибо.

+0

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

+0

Извините, вы правы. Я добавил его, потому что я попытался, если бы это имело бы значение, но это не так. Я удалил его сейчас. – Rex

ответ

2

Я не знаю, в чем разница между тем, что вы написали и

public function indexAction($page = "role", $option = "view") 

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

+0

Я установил значения по умолчанию в routing.yml. Согласно руководству Symfony2, это должно работать, но оно не работает, если я не даю никаких аргументов. Во всяком случае, ваше предложение действительно устранило мою проблему, поэтому спасибо вам за это. Я не предпочитаю это исправлять, но это лучше, чем ничего. ;) – Rex

+0

Да, конечно, это не объяснение, просто обходной путь. Но я не думаю, что он заслуживает анонимного, необъяснимого нисходящего ... – greg0ire

+0

Моей вечной благодарностью должно быть достаточно. – Rex