2013-06-13 43 views
0

我是Zend的新手,但非常非常熱衷於學習。這實際上只是Zend Framework中路由的一個簡單問題。如何使zendframework URL中的可選parametres

我明白它的基本原理,但我仍然對如何在URL的末尾創建一些可選參數感到困惑。例如,我有以下的默認頁網址:

examplesite.com/accounts/enquiry 

我現在要兩個額外的參數添加到它即:

userid= 6 
location= 12 

所以,最終的URL看起來應該像:

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

會讓你到同一頁面。

我不清楚。它如何做到這一點?我的意思是,這不是一個定製的網址。所以,我不需要創建自定義路線。它基本上只是需要添加到頁面的最後兩個參數。

我該怎麼做?

+0

您確實需要使用自定義路線,否則沒有辦法爲ZF知道,「6」是用戶ID,而「12」的位置;並且他們是可選的 –

回答

1

前2個參數是控制器和操作名稱,命名參數。 給你:

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

,或者你可以定義自己的路線是這樣的:

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

然後將其添加到路由器:

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

您好Konradwww。謝謝您的回覆。但是,當我添加userid/6 /位置/ 12它返回:錯誤,頁面找不到。也。我不希望在那裏有用戶名和位置。我只是想能夠把數字。即/ 6/2/etc – andreea115

+0

,所以你不能使用默認路由。然後你可以定義你自己的路線。請參閱我的修改過的anser。 – konradwww

0

你可以內部添加自定義路線你的Bootstrap.php,例如(未經測試):

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(確切!)。如果你不需要它,就把它刪除。想想你可能會更好地使用'[0-9]'沒有任何長度的規格... – simplyray

+0

哦,既然你是新的(?)在計算器:請接受這個responde,如果它回答你的第一個問題。 – simplyray