0

我们正在使用 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”,它只是来自路由器的参数。

4

2 回答 2

3

您可以使用控制器中的请求对象来访问您的数据。

获取请求对象: $request = $this->getRequest();

检索 POST 数据(如果您的表单是通过 POST 提交的): $post = $request->getPost();

检索 GET 数据(如果您的表单是通过 GET 提交的): $get = $request->getQuery();

按 setParam() 设置的用户参数、GET 参数和 POST 参数的顺序检索参数:$params = $request->getParams();

如果您使用 getParams() 获取数据,路由器设置的参数将覆盖您的 POST 数据。

因此,如果您只想从表单中获取数据,请使用 getPost() 或 getQuery() 方法。

于 2009-07-17T11:04:08.017 回答
1

可能您将表单数据作为 GET 发送,并配置 Zend_Router 来重写 url(不采用其他 get 参数)。

在这种情况下,解决方案是使用 POST 发送表单数据或更改 Zend_Router 中的路由。

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

于 2009-07-17T10:59:26.340 回答