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"은 누락되었으며 라우터의 매개 변수 만 있습니다.
해결책
컨트롤러의 요청-회전을 사용하여 데이터에 액세스 할 수 있습니다.
요청 객체를 가져옵니다. $ request = $ this-> getRequest ();
게시물 데이터 검색 (양식이 게시물을 통해 제출 된 경우) : $ post = $ request-> getPost ();
get data를 검색합니다 (양식을 통해 양식이 제출 된 경우) : $ get = $ request-> getQuery ();
setparam ()을 통해 설정된 순서 사용자 매개 변수에서 매개 변수를 검색하고 매개 변수를 가져옵니다.
GetParams ()로 데이터를 가져 오면 라우터에서 설정 한 매개 변수는 게시물 데이터를 무시합니다.
따라서 양식에서 데이터를 가져 오려면 getPost () 또는 getQuery () 메소드를 사용하십시오.
다른 팁
아마도 양식 데이터를 get으로 보내고 Zend_router를 구성하여 URL을 다시 작성하도록 구성했을 것입니다 (다른 GET 매개 변수를 복용하지 않고).
이 경우 솔루션은 Zend_router의 경로를 게시하거나 변경하여 양식 데이터를 보내는 것입니다.
코드는 정확한 문제가 무엇인지 결정하는 데 도움이됩니다.