我实际上正在使用 zend,我想知道如何在这样的 url 中获取 id:
/delete/2
我知道我可以使用:
// if URL is /delete/id/2
$request->getParam('id');
但我想要的是拥有像第一个/delete/2
这样的 url,这对我来说听起来更合乎逻辑。
想法?
谢谢你的帮助
我实际上正在使用 zend,我想知道如何在这样的 url 中获取 id:
/delete/2
我知道我可以使用:
// if URL is /delete/id/2
$request->getParam('id');
但我想要的是拥有像第一个/delete/2
这样的 url,这对我来说听起来更合乎逻辑。
想法?
谢谢你的帮助
我认为您应该能够使用路由解决此类问题。您可以为
/delete/2
通过将其添加到例如您的config.ini
文件中:
[production]
routes.delete.route = "delete/:id"
routes.delete.defaults.controller = delete
routes.delete.defaults.action = index
routes.delete.id.reqs = "\d+"
在这里您指定要匹配的 URL,其中以冒号开头的单词:
是变量。如您所见,您还可以对变量 regex 样式设置要求。在您的示例中,id
很可能是一位或多位数字,因此\d+
需要此变量。
此路由将 url 指向控制器的index
操作delete
并设置id
为 GET-var。您可以更改此 .ini 代码以满足您的特定需求。
可以通过将以下代码放入引导程序中来添加路由:
$config = new Zend_Config_Ini('/path/to/config.ini', 'production');
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');
试试这个:将以下函数添加到您的 Bootstrap.php
protected function _initRoute(){
$this->bootstrap ('frontcontroller');
$front = $this->getResource('frontcontroller');
$router = $front->getRouter();
$deleteRoute = new Zend_Controller_Router_Route(
'delete/:id',
array(
'controller' => '{enter-your-controller-name-here}',
'action' => '{enter-your-action-name-here}'
)
);
$router->addRoute('delete', $deleteRoute);
}
不要忘记将 {enter-your-controller-name-here} 替换为控制器名称,将 {enter-your-action-name-here} 替换为操作名称。
添加此代码后,$request->getParam('id');
应该可以正常工作。