我们正在使用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”缺失,只有路由器中的参数。
答案 0 :(得分:3)
您可以使用控制器中的请求对象来访问您的数据。
获取请求对象: $ request = $ this-&gt; getRequest();
检索POST数据(如果您的表单是通过POST提交的): $ post = $ request-&gt; getPost();
检索GET数据(如果您的表单是通过GET提交的): $ get = $ request-&gt; getQuery();
通过setParam(),GET参数和POST参数设置用户参数的顺序检索参数: $ params = $ request-&gt; getParams();
如果您使用getParams()获取数据,路由器设置的参数将覆盖您的POST数据。
因此,如果您只想从表单中获取数据,请使用getPost()或getQuery()方法。
答案 1 :(得分:1)
您可能正在将表单数据作为GET发送,并已配置Zend_Router来重写URL(不使用其他get参数)。
在这种情况下,解决方案是使用POST发送表单数据或更改Zend_Router中的路由。
您的代码有助于确定您的确切问题。