2012-03-09 12 views
1

私はCodeignitorを使用しています。私はJavaScriptを使って定数を分かりやすく整理可能な方法で共有する最良の方法を見つけようとしています。私は私のフッターのように私の変数をエコー可能性がビューでJavaScript定数でPHP定数を実装する最良の方法

1)(yuuuck!) 2)私は多分(ジャバスクリプト用のテンプレートが含まれている部分図を解析し、私の見解ではそれを注入だろうか?) 3 )私は動的にmyJavascript.js.phpのようなjavascriptファイルを作成し、それを私のヘッダーに含めることができました。

MVCフレームワークでJSをPHPに実装するには、どのような保守的な方法がありますか?

答えて

2

うまく私はJSONオブジェクトを使用するラップ私の変数を維持するために - 私はエンコーディングの問題では発生しませんその方法は、スラッシュ、手動でJavaScriptの私は追加したすべての変数を更新する必要が...

$variables_to_view['js_variables']['var_name'] = $var_name; 

はその後、私はプログラミングのスキルの面でそれが最善ではないことを知っているが、最終的にはそれは私が使うものだし、それが働いているビューに

php_variables = <?php echo json_encode($js_variables) ?>; 
alert(php_variables.var_name); 
+1

1 json_encodeは、このために完全である使用するために、そのより便利なように、この方法を好みます。 –

+0

ありがとう!ありがとう! –

1

スクリプトタグに変数がエコーされていても、問題はないようです。実際、BackboneJSのようなフレームワークはencouragingなので、クライアント側のコードに渡す必要があるデータに対してはそうすることができます。例えば

1

あなたは、このように短いタグを使用することができます あなたはJSの$ abcという変数を使用したい場合、あなたはJS

var abc = <?=$abc?>; 
+0

であっても、通常のPHPタグやエコーが...働くだろうと、それは動作しますOPの質問 –

+0

でオプション1)ですが、私は – emphaticsunshine

1

でこれを記述する必要がありますあなたは、PHPを作成することができますファイル。 script.js.phpのようなもの?outfor = 1;

<?php 
    header("Content-type:text/javascript"); //can be application/javascript. 
?> 

ABC = <?php echo $abc?> 
CBA = <?php echo $cba?> 
BAC = <?php echo $bac?> //and so on. 

いくつかの追加情報。 関数で "var"を使用すると、変数はその関数でのみ表示され、 "var"はグローバルではありません。

So.

function abc() 
{ 
    var a = 1; //only in abc() 
    b=2; //global 
} 
0

を渡します。それを短くするには:私はすべての定数をXMLファイルに入れて、同じ内容の2つの別々のファイルを生成する小さなスクリプトを用意しますが、構文は異なります。私は自分の値をコードに貼り付けています。それが誰にとっても役立つなら、私は非常に喜んで助けてくれるでしょう。 xmlは可能な限り簡単です。値

<?php 
define("GECOXML_PATH","../xml/geco.xml"); 
define("PHP_GECO_FN","../.includes/geco.php"); 
define("JS_GECO_FN","../js/geco.js"); 
echo "******** GECO (GEnerate COnstants files for PHP and JS) **********<br>"; 
echo "<br>"; 
echo "   input xml file: ". GECOXML_PATH."<br>"; 
echo "   output php file: ". PHP_GECO_FN."<br>"; 
echo "   output js file: ". JS_GECO_FN."<br>"; 
echo "********************************************************************<br>"; 

$geco = (object)xmlParse(GECOXML_PATH); 
echo "<br>"; 
echo "<br>"; 
echo "************ PHP GECO ************* <br>"; 
echo "<br>"; 
$PHP = gecoPHP($geco); 
echo "<br>"; 
echo "<br>"; 
echo "************** JS GECO ************<br>"; 
echo "<br>"; 
$JS = gecoJS($geco); 
writeFiles($PHP, $JS); 

//****** Functions ********* 

function xmlParse ($url) { 
     $fileContents= file_get_contents($url); 
     $fileContents = str_replace(array("\n", "\r", "\t"), '', $fileContents); 
     $fileContents = trim(str_replace('"', "'", $fileContents)); 
     return simplexml_load_string($fileContents); 
    } 

function writeFiles($PHPcontent, $JScontent) 
{ 
      echo "<br> PhP ok:". file_put_contents(PHP_GECO_FN, $PHPcontent) . "<br>"; 
      echo "<br> JS ok:" . file_put_contents(JS_GECO_FN, $JScontent) . "<br>"; 
} 

function gecoPHP($gecoOBJ) 
{ 
    foreach ($gecoOBJ as $key => $value) 
    { 
     if (is_numeric(str_replace(" ","",$value))) 
      { 
       $line = "define(\"" . $key . "\",". intval($value) . ");\n"; 
      } 
      else 
      { 
       $line = "define(\"" . $key . "\",\"". $value . "\");\n"; 
      } 
     $phpContent = $phpContent . $line; 
    echo $line."<br>"; 
    } 
    return "<?php\n"$phpContent."?>"; 
} 

function gecoJS($gecoOBJ) 
{ 
    foreach ($gecoOBJ as $key => $value) 
    { 
     if (is_numeric(str_replace(" ","",$value))) 
      { 
       $line = "var " . $key . "=". $value . ";\n"; 
      } 
      else 
      { 
       $line = "var " . $key . "=\"". $value . "\";\n"; 
      } 
     $JSContent = $JSContent . $line; 
    echo $line."<br>"; 
    } 
    return $JSContent; 
} 
?> 
+0

フォーマット時に何か間違っていた:だからxml: user3161536

関連する問題