2009-04-16 3 views
2

Как получить параметр «default», если он не указан?Zend Framework: как получить параметр по умолчанию?

Рассмотрим следующий пример:

http://localhost/controller/action/id/123 

В мой контроллер, я могу получить значение 'ид' с помощью

$request = $this->getRequest(); 
$id = $request->getParam('id'); 

Если URL является

http://localhost/controller/action/456 

как я получить значение 456? Что такое имя «param»?

+0

И что, если я хочу использовать больше параметров, таких как http: // localhost/controller/action/456? Otherparameter = foo & thirdparam = bar? – fabrik

ответ

4

По умолчанию URL ZF должны следовать схеме:

/controller/action/param1Name/param1Val/param2Name/param2Val ... 

Вы должны использовать router. Например, в bootstrap.php:

$frontController = Zend_Controller_Front::getInstance(); 
//^^^this line should be already there 

$router = $frontController->getRouter(); 
$route = new Zend_Controller_Router_Route(
    'yourController/yourAction/:id', 
    array(
     'id'  => 1, //default value 
     'controller' => 'yourController', 
     'action'  => 'yourAction' 
    ), 
    array('id' => '\d+') 
); 
$router->addRoute('yourController', $route); 
+0

Где именно я должен добавить этот маршрутизатор? В документе говорится в Контроллере. Это контроллеры/myController.php? или в файле bootstrap.php? TQ! – 2009-04-16 11:06:48

+0

это относится к контроллеру frontend – vartec

+0

Спасибо. Просто чтобы поделиться тем, что мне нужно поставить все это, прежде чем отправлять фронт-контроллер. <выше код идет здесь> // Отправляем запрос с помощью фронтального контроллера. $ frontController-> dispatch(); – 2009-04-16 14:50:11

0

пытаются добавить этот маршрут к маршрутизатору:

$route = new Zend_Controller_Router_Route_Regex(
    'my_controller/my_action/(\d+)', 
    array(
     'controller' => 'my_controller', 
     'action'  => 'my_action' 
    ) 
); 

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

Где именно я должен добавить этот маршрутизатор? В документе говорится в Контроллере. Это контроллеры/myController.php? – 2009-04-16 10:56:58

+0

Маршрут Вартека более эффективен и лучше в этом случае –

1

Просто хочу поделиться.

Указанная настройка маршрутизатора должна использоваться с $ frontController.

И обязательно поставьте его перед отправкой диспетчера.

<..above router code goes here...> 

// Dispatch the request using the front controller. 
$frontController->dispatch(); 

Надежда не теряет время, как я. ;-)

+0

Конечно. Вот почему я предложил поместить это в bootstrap.php, который вызывается перед отправкой. – vartec