2009-07-17 12 views
0

私たちはZend Routerを使用しており、フォームによって送信されるパラメータを上書きしているようです。コントローラに到達する唯一のパラメータは、Urlのパラメータです。Zend Routerは、フォームからポスト変数を上書きします

これはなぜ起こっているのですか?

; 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"が欠落していることに注意してください。そのパラメータはルータからのみです。

+0

コードを教えてください。ルータで何を持っているか、あなたのフォームをどのように送信したかは非常に重要です。 –

+0

私は質問を編集してコードを追加しました – lasse

+0

コントローラのパラメータの見方を追加できますか? –

答えて

3

コントローラ内のリクエストオブジェクトを使用して、データにアクセスすることができます。

リクエストオブジェクトを取得します。 $ request = $ this-> getRequest();

POSTデータを取得します(POST経由でフォームが送信された場合)。 $ post = $ request-> getPost();

GETデータを取得します(フォームがGETによって送信された場合)。 $ get = $ request-> getQuery();

setParam()、GETパラメータ、およびPOSTパラメータで設定したユーザパラメータの順序でパラメータを取得します。 $ params = $ request-> getParams();

getParams()でデータを取得すると、ルータによって設定されたパラメータがPOSTデータを上書きします。

フォームからデータを取得する場合は、getPost()メソッドまたはgetQuery()メソッドを使用します。

+0

答えをありがとう。 addCommentやaddPostなどのアクションでは、フォームデータをPOSTとして送信したいと考えています。ルータがGETでパラメータを送信する方法があるかどうか知っていますか? – lasse

+0

ルータはGETまたはPOST経由でパラメータを送信しません。そのメソッドのsetParam *ファミリを使用してリクエストに注入するだけです。 Floは完全に正しいです。フォームを処理するときにリクエストオブジェクトからPOSTパラメータを取得するだけで、すべてがうまくいくでしょう。 – jason

+0

jasonを明確にしてくれてありがとう。またお返事ありがとうございます。私はもう一度それを読んで、それは多くの意味があります。これは金曜日の遅れで、私の脳はうまくいきませんでした。 – lasse

1

あなたはフォームデータをGETとして送信していて、他のgetパラメータを使わずにURLを書き換えるようにZend_Routerを設定している可能性があります。

解決策は、POSTでフォームデータを送信するか、Zend_Routerでルートを変更することです。

あなたのコードは、あなたの正確な問題が何であるかを判断するのに役立ちます。

関連する問題