2011-08-08 32 views
2

私は、永続性を持って自分のフォーム値を入力するために、mustache.php(KohanaのKOstache)を使用しています。私は/私は口ひげデータにアクセスして使用することができます最善の方法何方法があるかどうかを知るために好奇心が強いmustache.jsとmustache.phpの併用

<input type="checkbox" id="copy-billing-address"><span>My billing address is the same as my shipping address</span><br /> 

<label for="project[billing-organization]" class="pb-label">Organization:</label> <input type="text" name="project[billing-organization]" value="{{#field_data}}{{billing-organization}}{{/field_data}}" /> 
{{#errors}}{{#billing-organization}}<span class="validation-error">{{billing-organization}}</span>{{/billing-organization}}{{/errors}} 

<label for="project[billing-address-1]" class="pb-label">Address:</label> <input type="text" name="project[billing-address-1]" value="{{#field_data}}{{billing-address-1}}{{/field_data}}" /> 

{{#errors}}{{#billing-address-2}}<span class="validation-error">{{billing-address-2}}</span>{{/billing-address-2}}{{/errors}} 

<label for="project[billing-city]" class="pb-label">City:</label> <input type="text" name="project[billing-city]" value="{{#field_data}}{{billing-city}}{{/field_data}}" /> 
{{#errors}}{{#billing-city}}<span class="validation-error">{{billing-city}}</span>{{/billing-city}}{{/errors}} 

等...

:私のテンプレートは、この線に沿って何かでありますPHPがテンプレートの値を入力するように戻っていることを示します。たとえば:

<?php $view->jsondata = json_encode($array); ?> 

//javascript 
var template = $("#billing-address").innerHtml(); 
var data = {{jsondata}} 
html = Mustache.to_html(template, data); 
template.innerHtml(html); 

にはどうすれmustache.phpを使用して、私のJavaScriptに{{jsondata}}を送ることができますか?

+0

1 :) – ZolaKt

答えて

2

同じことをするにはXHRリクエストを使用する必要があります。ページがレンダリングされたとき、およびページが初期化されるときにjavascript変数にjsonを格納してマークアップをレンダリングする場合は、次のようにPHPの

は、あなたが何かの操作を行います。(私はPHPの構文に慣れていないよ私を許して)

<script> 
var globalData= <?php //out json_encode($array); ?></script> 

と、次のようにスクリプトタグに生きるべきテンプレート:

<script id="billing-address" type="tmpl/js" > 
<input type="checkbox" id="copy-billing-address"><span>My billing address is the same as my shipping address</span><br /> 

<label for="project[billing-organization]" class="pb-label">Organization:</label> <input type="text" name="project[billing-organization]" value="{{#field_data}}{{billing-organization}}{{/field_data}}" /> 
{{#errors}}{{#billing-organization}}<span class="validation-error">{{billing-organization}}</span>{{/billing-organization}}{{/errors}} 

<label for="project[billing-address-1]" class="pb-label">Address:</label> <input type="text" name="project[billing-address-1]" value="{{#field_data}}{{billing-address-1}}{{/field_data}}" /> 

{{#errors}}{{#billing-address-2}}<span class="validation-error">{{billing-address-2}}</span>{{/billing-address-2}}{{/errors}} 

<label for="project[billing-city]" class="pb-label">City:</label> <input type="text" name="project[billing-city]" value="{{#field_data}}{{billing-city}}{{/field_data}}" /> 
{{#errors}}{{#billing-city}}<span class="validation-error">{{billing-city}}</span>{{/billing-city}}{{/errors}} 
</script> 

<div id="123"> </div> //div that you want to insert the markup tp 

$(document).ready(function(){ 
    var template = $("#billing-address").html(); //use jquery methods when possible 
    html = Mustache.to_html(template, globalData); 
    $("#123").html(html); 
}); 

をし、あなたは行くのが良いと思う。

Jquery ajaxメソッドを使用するXHR方法。同じコードを使用して、サーバーとクライアントのテンプレートの両方の概念を理解するための

$.ajax(
{ 
url: "getJson.php", 
data: {id:123}, // data optional, 
type: "GET", //or POST depending on what you need 
dataType:"json", //data you are receiving from server 
success: function(jsonData) 
{ 
var template = $("#billing-address").html(); //use jquery methods when possible 
html = Mustache.to_html(template, jsonData); 
$("#123").html(html); 
} 
}); 
+0

おかげで、このアプローチの問題点は、 '私は' //うちjson_encode($配列)を行うことができないということです私はロジックレステンプレートのためにmustache.phpを使用していますので、 –

+0

私はそれに従いません。 – Baz1nga

+0

@Dave Kiss:テンプレートではなくPHPの変数にクラスを表示し、変数(スクリプトブロック+ js変数定義)に保存します。私はPHP側でjsonをエコーする問題を抱えていました。なぜなら何らかの理由でjs変数にうまくエコーしなかったために問題が発生したからです。近い締め切りでXHRのアプローチに行きました。私は今すぐそれを作って結果をここに掲載しようとするかもしれません。また、テンプレートが大きい場合は、すべてをjs変数に格納するよりも、XHRを使用する方が効率的かもしれません – ZolaKt

関連する問題