2

如果未指定,我如何获得“默认”参数?

考虑以下:

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

在我的控制器中,我可以使用 'id' 的值

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

如果网址是

http://localhost/controller/action/456

如何获得 456 的值?“参数”名称是什么?

4

3 回答 3

4

默认情况下 ZF URL 必须遵循模式:

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

你应该使用路由器。例如在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);
于 2009-04-16T10:37:18.357 回答
1

只是想分享。

上述路由器设置必须与 $frontController 一起使用。

并确保将其放在控制器调度之前。

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

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

希望不要像我一样浪费时间。;-)

于 2009-04-16T14:52:13.627 回答
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);
于 2009-04-16T10:49:13.697 回答