2013-01-04 19 views
10

TwigがAJAXでテンプレートを読み込む方法を理解しようとしています。彼らのウェブサイトから 、AJAXがTWIGで動作する方法

echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here')); 

テンプレート(http://twig.sensiolabs.org/doc/api.html)をロードする方法は明らかであるしかし、どのようにこの作品はAJAX呼び出しのためでしょうか?あなたは、あなたが、index.htmlの一部だけであるものを「レンダリング」し、ページ全体をリロードしないことをTwigにどのように伝えますか?私はTwigの唯一のAjaxの例(http://twig.sensiolabs.org/doc/recipes.html)を見ましたが、これはあなたが変更したいページのどの部分を知っているかを説明していません。 Ajax呼び出しがページ・コンテンツの更新をもたらすと仮定します。私はこれの簡単な例が必要です。これは、Twigのレシピページにあるもの以上のものです。

1)のindex.htmlとcontent.htmlのようないくつかのファイルで、あなたのindex.htmlを区切ります

+0

それは知りません。ページのチャンクを更新する場合は、更新が必要なチャンクだけをレンダリングします。これは「部分的」と呼ばれることもあります。 – Charles

+0

私に指摘できる例がありますか? – user1082428

+0

コード、番号。手順、はい。メインテンプレートを[含まれる]ものに分割します(http://twig.sensiolabs.org/doc/tags/include.html)。 Ajaxリクエストに対して独立してレンダリングすることができ、メインページにインラインで挿入するだけです。理論的には。私は最後にTwigと一緒に仕事をして以来、しばらくしていたので、これを回答として投稿していません。 – Charles

答えて

8

はそれを達成するには、いくつかの方法があります。 次にindex.htmlのinclude関数を使用してcontent.htmlをインクルードします。あなたは、たとえばjQueryを使ってあなたのAjaxのリクエストを行う場合 :

例:

if(isAjaxRequest()) //try to find the right function here 
    echo $twig->render('content.html', array('the' => 'variables', 'go' => 'here')) 
else 
    echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here')); 

編集

$.get('yoururl', function(data) { 
    $('#divtoremplace').html(data); 
}); 

2)あなたのindex.htmlにrequest.ajaxブールを使用し

{% if request.ajax == false %} 
<p>My header, not reloaded with ajax</p> 
{% endif %} 

<p>My content, reloaded with ajax</p> 

{% if request.ajax == false %} 
<p>Other content, not reloaded with ajax</p> 
{% endif %} 

わからない2番目のものについては、これはドキュメントにトリックaccordindを行う必要があります。最善の方法は、コードを分ける最初のソリューションです。テンプレートで直接

+0

で編集しました。request.ajaxを使ってみましたが、Twigはそれが存在しないというエラーを投げたので、サーバー側で正しいものを生成する必要がありますか?それは小枝のグローバル変数ではありません。 – user1082428

+1

私はついにこれを手に入れました。私の独自の例が今では動作します。皆さんありがとう! – user1082428

+1

どのようにisAjaxRequest()または変数をTwigテンプレートに渡しますか? –

9

{% if app.request.isXmlHttpRequest() %} 
    // code if ajax request 
{% else %} 
    // code if not ajax request 
{% endif %} 
関連する問題