Zend Router перезаписывает переменные записей из формы - PullRequest
0 голосов
/ 17 июля 2009

Мы используем Zend Router, и кажется, что он перезаписывает параметры, отправляемые формами. Единственные параметры, которые поступают в контроллер - это параметры из 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" отсутствует, это только параметры маршрутизатора.

Ответы [ 2 ]

3 голосов
/ 17 июля 2009

Вы можете использовать объект запроса в вашем контроллере для доступа к вашим данным.

Получить объект запроса: $ request = $ this-> getRequest ();

Получить данные POST (если ваша форма отправлена ​​через POST): $ post = $ request-> getPost ();

Получить данные GET (если ваша форма отправлена ​​через GET): $ get = $ request-> getQuery ();

Получить параметр в пользовательских параметрах заказа, установленных через setParam (), параметры GET и параметры POST: $ params = $ request-> getParams ();

Если вы извлекаете данные с помощью getParams (), параметры, установленные маршрутизатором, переопределяют ваши данные POST.

Так что, если вы хотите только извлечь данные из вашей формы, используйте метод getPost () или getQuery ().

1 голос
/ 17 июля 2009

Возможно, вы отправляете данные формы в виде GET и настроили Zend_Router для перезаписи URL (без принятия других параметров get).

В этом случае решение состоит в том, чтобы отправить данные формы с помощью POST или изменить маршруты в Zend_Router.

Ваш код поможет определить, в чем именно заключается ваша проблема.

...