如果未指定,我如何获得“默认”参数?
考虑以下:
http://localhost/controller/action/id/123
在我的控制器中,我可以使用 'id' 的值
$request = $this->getRequest();
$id = $request->getParam('id');
如果网址是
http://localhost/controller/action/456
如何获得 456 的值?“参数”名称是什么?
如果未指定,我如何获得“默认”参数?
考虑以下:
http://localhost/controller/action/id/123
在我的控制器中,我可以使用 'id' 的值
$request = $this->getRequest();
$id = $request->getParam('id');
如果网址是
http://localhost/controller/action/456
如何获得 456 的值?“参数”名称是什么?
默认情况下 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);
只是想分享。
上述路由器设置必须与 $frontController 一起使用。
并确保将其放在控制器调度之前。
<..above router code goes here...>
// Dispatch the request using the front controller.
$frontController->dispatch ();
希望不要像我一样浪费时间。;-)
尝试将此路由添加到路由器:
$route = new Zend_Controller_Router_Route_Regex(
'my_controller/my_action/(\d+)',
array(
'controller' => 'my_controller',
'action' => 'my_action'
)
);
$router->addRoute('my_route', $route);