0

action stackZF アプリケーションで使用しています。ここでシナリオを説明します。最初のアクションでは、選択ボックスと送信ボタンを備えた単純なフォームがあります。投稿では、データを検証し、2 番目のアクションを保存して にプッシュしaction stackます。

スタックにプッシュした 2 番目のアクションにも、投稿時にデータを保存するフォームがあります。

ここで問題が発生します。アクション スタックが処理されると、スタックがポップされ、スタックに保存されている 2 番目のアクションが転送されます。2 番目のアクションが呼び出されると、post のループに直接移動し、最初のアクション リクエストが post であったため、データを検証しようとしますが、2 番目のアクションからフォームを取得できません。

アクションスタックが悪であることは知っていますが、今のところ他に選択肢はありません。これは、私の問題を説明しようとした 1 つのシナリオにすぎません。

質問の説明が下手でしたら、詳しく教えていただけると嬉しいです...

public function firstactionAction() {
    if($this->getRequest()->isPost()) {
        //validate and save form
        $helper = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
        $request = new Zend_Controller_Request_Http();
        $request->setControllerName('index');
        $request->setModuleName('default');
        $request->setActionName('secondaction');
        $helper->pushStack($request);
    } else {
        //creating form object and assigning to view.
    }
}
public function secondactionAction() {
    if($this->getRequest()->isPost()) {
        //Problem is here.. when action stack gets processed.. it directly comes here. as it uses forward internally..
    } else {
        //creating form object and assigning to view.
    }
}

前もって感謝します...

4

1 に答える 1

1

簡単な方法が 1 つあります。単純な非表示フィールドを各フォームに追加し、次の条件を実行するだけです。

if($this->getRequest()->isPost() && $this->getRequest()->getPost('hidden') == 'second_form') {
    // ...
}
于 2012-05-11T08:06:12.750 に答える