2013-06-13 2 views
0

저는 젠드를 처음 접하지만 아주 배우고 싶어합니다. 이것은 Zend Framework에서의 라우팅에 대한 간단한 질문입니다.젠드 프레임 워크에서 선택적 매개 변수를 만드는 방법 URL

나는 그것의 기본을 이해하지만, 나는 나의 URL의 끝 부분에 몇 가지 선택적 매개 변수를 어떻게 만들 수 있는지 아직도 혼란 스럽다. 예를 들어, 나는 다음과 같은 기본 페이지 URL이 있습니다

examplesite.com/accounts/enquiry 
지금 즉, 여기에 두 개의 추가 매개 변수를 추가 할

:

examplesite.com/accounts/enquiry/6/12 
but 
examplesite.com/accounts/enquiry  
:

userid= 6 
location= 12 

그래서, 최종 URL이 같아야합니다

같은 페이지로 이동합니다.

명확하지 않습니다. 어떻게이 일을합니까? 제 말은 맞춤 URL이 아니란 것입니다. 그래서 맞춤 경로를 만들 필요가 없습니다. 기본적으로 페이지에 추가해야하는 마지막 두 매개 변수입니다.

어떻게하면됩니까?

+0

당신은 사용자 정의 경로를 사용해야합니까; 그리고 그들은 선택 사항이라고 –

답변

1

처음 2 개의 매개 변수는 컨트롤러 및 작업 이름, 명명 된 params입니다.

examplesite.com/accounts/enquiry/userid/6/location/12 

또는 당신은 다음과 같이 당신의 자신의 경로를 정의 할 수 있습니다 : 여기 당신은

$router->addRoute('accounts', $route); 
+0

안녕하세요. 당신의 답변에 감사드립니다. 그러나 userid/6/location/12를 추가하면 erro, page not found.Also가 반환됩니다. 나는 그곳에 사용자 ID가없는 것을 원하지 않는다. 나는 그 숫자를 넣을 수 있기를 원한다. 즉/6/2/etc – andreea115

+0

기본 경로를 사용할 수 없습니다. 그런 다음 자신 만의 경로를 정의하십시오. 내 수정 된 anser를 참조하십시오. – konradwww

0

당신은 내부의 사용자 정의 경로를 추가 할 수 있습니다

$route = new Zend_Controller_Router_Route('accounts/enquiry/:userid/:location); 

를 다음 라우터에 추가 Bootstrap.php, 예 : (안된) : 그렇지 않으면이 ZF는 '6'사용자 ID는 것을 알 수있는 방법은 없습니다, 그리고 '12'이 위치하기 때문에

protected function _initRoutes() 
{ 

    [...] 

    $frontController = Zend_Controller_Front::getInstance(); 
    $router = $frontController->getRouter(); 

    $accounts = new Zend_Controller_Router_Route(
      'accounts/enquiry/:userid/:location', 
      array(
       'userid' => '[0-9]{2}', 
       'location' => '[0-9]{2}', 
       'controller' => 'accounts', 
       'action' => 'enquiry', 
      ) 
     ); 

    $router->addRoute('accounts', $accounts); 

    [...] 

} 

http://framework.zend.com/manual/1.12/en/zend.controller.router.html

+0

안녕하세요. 그 점에 대해 정말 고마워. 그것은 나를 위해 정말로 명확하게했습니다. 하나의 질문. {2}는 무엇을 나타 냅니까? – andreea115

+0

'[0-9] {2}'는 GET 변수의 기본적인 검증입니다. '[0-9]'는 숫자 만 의미하고'{2}'는 길이 2 (exact!)를 의미합니다. 필요없는 경우에는 제거하십시오. 길이를 지정하지 않고'[0-9]'를 사용하는 것이 더 좋을 것 같아 ... – simplyray

+0

오, 그리고 당신이 새롭기 때문에 (?) stackoverflow : 초기 질문에 답하면이 응답을 받아 들여주십시오. – simplyray

관련 문제