2014-11-02 6 views
0

내 팔콘 앱은 표준 MVC 경로 규칙에 따라 잘 작동했습니다. 그러나, 나는 URL을 통해 몇 가지 변수를 처리하는, 그때 경로가 :팔콘 경로가 작동하지 않습니다.

$router = new \Phalcon\Mvc\Router(); 
$router->add("/timesheet/some/{year:[0-9]+}/{month:[0-9]{2}}/{day:[0-9]{2}}", "Timesheet::some"); 
$router->add("/timesheet/getreport/{type:[a-z]}/{year:[0-9]+}/{month:[0-9]{2}}/{day:[0-9]{2}}", "Timesheet::getreport"); 
$router->addPost("/user/auth", "User::auth"); 

return $router; 
  1. 첫 번째 경로 (작업 표/일부) 괜찮 았는데, 내가 "년"에 액세스 할 수 있습니다, "달" 변수 을 사용하지만 두 번째 경로 (작업 표/getreport)가 작동하지 않습니다. 이 경우 $year = $this->dispatcher->getParam("year");은 null을 반환합니다.

  2. 내가

    $ 라우터로 변경 한 경우 = 새 \ Phalcon \ MVC \ 라우터 (거짓);

    $ 라우터 기반 추가> ("/ : 제어기/: 동작", 어레이 ( "제어기"=> 1 '액션'=> 2를 ));

    $ router-> add ("/ timesheet/some/{year : [0-9] +}/{month : [0-9] {2}}/{day : [0-9] {2 }} ","Timesheet :: some "); $ router-> addPost ("/ timesheet/getreport/{type : [az]}/{년 : [0-9] +}/{month : [0-9] {2}}/{day : [0 -9] {2}} ","Timesheet :: getreport "); $ router-> addPost ("/ user/auth", "User :: auth");
    return $ router;

모든 요청은 색인/색인으로 라우팅됩니다. 내 프로젝트 URL은 localhost/fpas이고 이미/fpas/timesheet/some 및/timesheet/some 경로를 모두 시도하지만 항상 색인/색인으로 리디렉션합니다. 그게 뭐가 잘못 됐어? (보안/인증은 주석 처리되었으므로 인증 결과가 아닙니다.)

  1. 내 기본 경로 인 $ router = new \ Phalcon \ Mvc \ Router(); $ router = new \ Phalcon \ Mvc \ Router (false)를 사용하는 동안에 만 MVC 규칙을 따르도록 허용합니다. 하지만 모든 컨트롤러/작업에 대한 모든 경로를 구체적으로 지정해야합니다. 대부분의 행동을 위해 컨벤션을 유지하면서 특정 행동에 대한 특정 경로를 다시 작성할 수 있습니까? 어떻게해야합니까?

대단히 감사합니다.

답변

2

그것은 나를 위해 작동 :

$router = new Phalcon\Mvc\Router(); 
$router->add("/", array(
    'controller' => 'index', 
    'action' => 'setLanguage', 
)); 

$router->add("/{language:[a-z]{2}}", array(
    'controller' => 'index', 
    'action' => 'index', 
    'language' => 1 
)); 

이 하나 개 GET의 기본 라우팅을 단지 언어 기본 동작 "인덱스"를 시작

$router->add("/{language:[a-z]{2}}/:controller/:action", array(
    'controller' => 2, 
    'action' => 3, 
    'language' => 1 
)); 

에서이 URL을하지 않을 때

$router->add("/{language:[a-z]{2}}/:controller", array(
    'controller' => 2, 
    'action' => 'index', 
    'language' => 1 
)); 

일부 다른 경로

$router->add("/{language:[a-z]{2}}/:controller/:action/:params", array(
    'controller' => 2, 
    'action' => 3, 
    'language' => 1, 
    'params' => 4 
)); 

$router->add("/{language:[a-z]{2}}/question/add/{type}", array(
    'language' => 1, 
    'controller' => 'question', 
    'action' => 'add', 
)); 
관련 문제