zend路由器覆盖从表单的邮政变量
-
16-09-2019 - |
题
我们正在使用Zend路由器,似乎它覆盖按表单发送的参数。到达控制器的唯一参数是来自URL的参数。
有人知道为什么会发生这种情况吗?
这是配置文件:
; Routing config
routes.groups.route = groups/:group/:type/:idPost/:postUrl/:page
routes.groups.defaults.controller = groups
routes.groups.defaults.action = index
routes.groups.defaults.type = main
routes.groups.defaults.idPost =
routes.groups.defaults.postUrl =
routes.groups.defaults.page = 1
和表格:
<form action="<?= $this->_view->baseUrl ?>/groups/<?= $group['groupUrl'] ?>/deletepost/" method="post">
<input type="hidden" name="formUrl" value="<?=$formUrl ?> />
...
</form>
控制器:
public function deletepostAction() {
$params = $this->getRequest()->getParams();
print_r($params);
die;
}
...输出:
Array
(
[group] => dandy-handwriting
[type] => deletepost
[idPost] =>
[controller] => groups
[action] => index
[postUrl] =>
[idGroup] => 1
[lang] => en
)
请注意,缺少“ formurl”,其唯一的参数来自路由器。
解决方案
您可以使用控制器中的请求对象访问数据。
获取请求对象:$请求= $ this-> getRequest();
检索发布数据(如果您的表格是通过邮政提交的):$ post = $ request-> getPost();
检索获取数据(如果您的表格是通过GET提交的):$ get = $ request-> getQuery();
在通过setParam()设置的订单用户参数中检索参数,获取参数和帖子参数:$ params = $ request-> getParams();
如果您使用getParams()获取数据,则路由器设置的参数将覆盖您的帖子数据。
因此,如果您只想从表单中获取数据,请使用getPost()或getQuery()方法。
其他提示
您可能是将表单数据作为GET发送,并已配置了Zend_router来重写URL(而无需采用其他GET参数)。
在这种情况下,解决方案是在sopt_router中发送或更改路由的表单数据。
您的代码将有助于确定您的确切问题是什么。
不隶属于 StackOverflow