我们正在使用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中发送或更改路由的表单数据。

您的代码将有助于确定您的确切问题是什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top