0

コントローラの画像アルバムに対して2つのアクションがあります。1つは新しいアルバムを作成してPOSTを処理するフォームを作成し、もう1つは既存のアルバムのリストを生成します。フォームは最初のアクションに投稿してから、リストアクションをアクションスタックに配置します。この順序が必要なのは、新しく作成されたアルバムがリストに表示されないためです。

したがって、私のHTML出力には、最初にcreateAction-viewの出力があり、次にlistAction-viewの出力があります。しかし、スタイル上の理由から、HTMLの2つのアクションの表示出力の順序を変更したいと思います。アクションが実行される順序を変更せずに、リストの後にフォームを表示する方法はありますか?

4

1 に答える 1

0

可能な限り、アクション スタックの使用を避けるようにしてください。POST データを処理した後にリスト ビューにリダイレクトするだけで、この要件を完全に回避できます。これにより、ユーザーが誤ってページを更新して同じアルバムを再度送信することも防止できます。それでもフォームをリストの下に表示したい場合は、フォームをそのアクションにも追加して、アルバムリストの下のビューに出力できるようにします。

public function createAction()
{
    $form = new Yourapp_Form_Album();
    if ($this->getRequest()->isPost()) {
        if ($form->isValid($this->getRequest()->getPost()) {
            // save the data and redirect
        }
    }

    $this->view->form = $form;
}

public function listAction()
{
    // load albums and assign to the view

    // if you want the form under the list
    $this->view->form = new Yourapp_Form_Album();
}
于 2012-05-06T14:49:35.303 に答える