2012-02-26 2 views
1

현재 symfony2에서 라우팅 옵션을 구성하려고하므로 은 /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; 
     } 

    } 
?> 

문제는 때 I 내가 시도하는 경우에, 그러나

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 

: '로컬 호스트/app_dev.php/CMS'로 이동하려고, 그것은 나에게 다음과 같은 오류를 제공합니다 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

관련 문제