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-object を使用して、データにアクセスできます。

リクエスト オブジェクトを取得します: $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 に答える