0

複数のコントローラー (投稿、コメント、カテゴリなど) と対話するビューがあります。

コメントが空でない場合は、同じアクション (コメント/追加) に移動しますが、この場合、次のような方法で以前のビューに手動でリダイレクトします。

$this->redirect(array('controller' => 'posts', 'action' => 'view', $this->request->data['Comment']['posts_id'], '#' => $this->Comment->id));

たとえば、空のコメントを投稿しようとすると、コメントの検証によりコメント/追加(フォームアクションのルート)にリダイレクトされますが、リダイレクトでこれを実行したくありません。元のビューに戻したいのですが、コントローラーまたはモデルで変更する必要はありません(私の知る限り)

これを行う方法はありますか?

ありがとう。

4

1 に答える 1

1

これを行う最も簡単な方法は、フォームを AJAX 経由で送信することです。そのため、送信時にページ全体を更新するのではなく、エラーが発生した場合にフォームを取得するだけです (エラーがある場合)。

明らかに、これは Javascript を使用しないユーザーには機能しません。したがって、これらのユーザーについて心配する必要はありません。または、コメント コントローラーの add メソッドが必要なビューを使用するようにすることもできます。このようなもの:

if ($this->request->is('ajax')) {
    $this->render('/Elements/comment_form');
    return;  // return the form only
} else {
    $this->render('/Posts/view'); // Your post view.ctp would have the comment form on it.
}

この方法を使用したページの例を次に示します: http://www.lintonmeagher.com/contactいずれかのフォームをデータなしで送信してみてください。

さらに情報が必要な場合はお知らせください。

于 2012-10-04T09:39:31.803 に答える