php - Zend Router 中的动态键=>值段
问题描述
需要在 Zend Router 中实现动态路由参数分段。这个想法是:拥有 url: /route/:route/resource/:resource/:identifier
,具有以下配置:
'orchestration.rest.dynamic-router' => array(
'type' => 'Segment',
'options' => array(
'route' => '/route/:route/resource/:resource[/:identifier]',
'defaults' => array(
'controller' => 'Controller',
),
),
),
需要使其支持n个不同的key=>value路由器参数,格式如下:
/route/:route/resource/:resource/:identifier/key1/value1/key2/value2/key3/value3
第二个问题是,这只有在您提供了可选的 :identifier 参数时才有效。
这是我检查过的,但不确定如何实现目标: https ://docs.zendframework.com/zend-router/routing/#zend92router92http92segment
解决方案
保留静态路由。
1)它们被缓存以获得更好的性能
2)如果您使用休息逻辑,请使用 POST 方法,而不是 GET(url 中的参数)
路线
'orchestration.rest' => array(
'type' => 'Segment',
'options' => array(
'routerest' => '/routerest/:action',
'defaults' => array(
'controller' => 'Controller',
),
),
),
使用 post 在服务器上使用休息操作,使用 Ajax 或其他...
(pseudo code)
datas={key1 : param1 , key2 : param2, etc...}
url=yourDomain/routerest/show (show=the action)
send Ajax Request(or something else in another langage with METHOD=POST)
其他操作,例如“getdatas”
... use post to consume rest action on server, with Ajax, or other...
datas={id1 : param1 , id2 : param2, etc...}
url=yourDomain/routerest/getdatas (getdatas=the action)
...在您的 Controller.php
...处理路由中的显示操作
function showAction() {
$request = $this->getRequest();
if ($request->isPost()) {
$param1=$this->params()->fromPost('key1','defaultvalue');
$param2=$this->params()->fromPost('key2','defaultvalue');
...
...
} else {... ERROR..}
}
...处理路线中的 getdatas 操作
function getdatasAction() {
$request = $this->getRequest();
if ($request->isPost()) {
$id1=$this->params()->fromPost('id1','defaultvalue');
$id2=$this->params()->fromPost('id2','defaultvalue');
...
...
if ($id1$=='all') { return $this->redirect()->toRoute ('otherroute', array ('action' => 'xxx', 'paramxxx' => 'xx'));
...
...
} else {... ERROR..}
}
推荐阅读
- javascript - 获取 blob 错误 - net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)
- javascript - UnhandledPromiseRejectionWarning:TypeError:无法解构“req.body”的属性“name”,因为它未定义
- machine-learning - 线性回归闭式解的实现
- python - 如何让 Discord Bot 重复并模拟用户回复?
- codeigniter - 如何在codeigniter中显示包含mpdf样式的视图页面?
- python - 需要提示来提高 Python 程序的性能
- python - 特定位置的点数 - 熊猫
- javascript - 如何使 d3 时间线图表可滚动?
- copy - Google Drive:将文件夹从共享驱动器复制到自己的驱动器
- reactjs - 过滤后的数据在 React 中显示较晚