2012-11-27 21 views
25

私はsymfony2でajaxについての簡単なチュートリアル/例を探しています。AjaxをSymfony2と統合する方法

私はこれらの例があります。

どのようにすることができますがこれらはSymfonに入れられますy2アプリ?

+1

エンティティ/フォーム/アクション/ビューをajaxなしで作成しようとしましたか? – Ziumin

+0

はい、私は –

+0

ショー(Symfony2ので)このコードで作成しますが、答えは私をたくさん – Ziumin

答えて

105

簡単です。 Symfony2で3つのステップを経てAJAX呼び出しを行う方法を説明します。次の例では、jQueryライブラリを使用することを想定しています。

  • AJAX呼び出しを処理するアクションのルートを定義します。例えば。

    AcmeHomeBundle_ajax_update_mydata: 
        pattern: /update/data/from/ajax/call 
        defaults: { _controller: AcmeHomeBundle:MyAjax:updateData } 
    
  • HomeバンドルからMyAjaxコントローラでアクションを定義します。例えば。

    public function updateDataAction(){ 
        $request = $this->container->get('request');   
        $data1 = $request->query->get('data1'); 
        $data2 = $request->query->get('data2'); 
        ... 
        //handle data 
        ... 
        //prepare the response, e.g. 
        $response = array("code" => 100, "success" => true); 
        //you can return result as JSON 
        return new Response(json_encode($response)); 
    }  
    
  • 例えば、あなたのTwigテンプレートであなたのAJAXコールを準備:

    function aButtonPressed(){ 
        $.post('{{path('AcmeHomeBundle_ajax_update_mydata')}}',    
           {data1: 'mydata1', data2:'mydata2'}, 
          function(response){ 
            if(response.code == 100 && response.success){//dummy check 
             //do something 
            } 
    
        }, "json");  
    } 
    
    $(document).ready(function() {  
        $('button').on('click', function(){aButtonPressed();}); 
    }); 
    

    あなたは他のAJAX呼び出しを使用して例を変更することができます。

+0

コントローラを助けた http://pastebin.com/sPJkhpbY をルーティングします。http ://pastebin.com/mpb4X7CU ajax.js http://pastebin.com/tx70YNxz ビュー: { "コード": http://pastebin.com/9DvVPYMJ 私は私だけ見ブラウザを開き:100、 "success":true} 私は完全に初心者です –

+0

これは、PHPでjsコードを記述する必要があることを意味しますか? – wilsonrufus

+1

@wilsonrufus ** NO!** JSは常にクライアントサイドで実行されます.PHPではサーバサイドでPHPが実行されます。 ajaxを使用すると、1回の呼び出しでクライアント側のページ全体がレンダリングされません。 URLに対するクライアントの要求。サーバーはまず、私が示したJSコードを持つメインのPHPページを返します。次に、ブラウザが応答を受け取ってメインページをロードすると(そして最終的にはドキュメントが準備完了です)、JSコードが実行されます。 JSコードはSymfonyアクション(一意のURLによってマップされます)を呼び出し、JSが処理する結果を待ちます。 – JeanValjean

関連する問題