1

create()ProjectsControllerに、フォームをレンダリングし、AJAXを使用してそのデータを保存するメソッドがあります。

class ProjectsController extends AppController
{    
    public function create()
    {
        if ($this->request->is('post'))
        {
            $this->Project->create();
            $this->request->data['Project']['created_by'] = $this->Auth->user('id');
            if ($this->Project->save($this->request->data))
            {
                ...
            } else {
                ...
            }
        }

    }

データが保存されている場合は成功メッセージを渡すだけで、ajaxリクエストでない場合はフォームをレンダリングするにはどうすればよいですか?autoRenderフォームをレンダリングする必要があるため、falseを設定できません。

jaxリクエストを処理するための最も正しい方法ですか?そうでない場合はどうすればよいですか?

4

1 に答える 1

1

AJAXの検出:

次を使用できます。

if($this->request->is('ajax')) {

ajaxを使用してやりたいことをすべて実行し、残りを実行するのは明らかな「else」です。

それに対処する:

おそらくこのようなもの:

if ($this->request->is('ajax')) {
    //process the ajax response
    $this->render('/Ajax/json');

} else {
    if($this->request->is('post')) {
        //process the post
    }
    //set variables for the view...etc etc

}

別のオプション-個別の機能:

または、2つの異なるアクションを実行することもかなり一般的です。1つはajax用で、もう1つはその他の必要なアクション用です。if()ブロックを全体に配置したくないので、これが私が好きな方法です。しかし-それぞれに、そして私は両方が定期的に使用されるのを見てきました。

public function create_ajax() { ... }

public function create() { ... }
于 2012-12-06T07:15:44.643 に答える