2016-05-24 7 views
0

smartyを使用している人のための小さな質問です。私はPHPを直接私のコードに渡そうとしていますが、私がすると、キャッシュされたバージョンはPHPを取り除き、そのまま直接印刷します。SmartyBCの実装

<div class="dashboard-card-content"> 
<?php 

$con = mysqli_connect(Nice,Try,Fly,Guy); 
$company_id = $_smarty_tpl->tpl_vars['auth']->value['user_id']; 
$company_id = mysqli_query($con,"SELECT company_id FROM cscart_users WHERE user_id = $company_id")->fetch_object()->company_id; 
$company_id = mysqli_query($con,"SELECT goal FROM cscart_companies WHERE company_id = $company_id")->fetch_object()->goal; 
echo "Your current goal is: ".$company_id; 
?> 

これはちょうど私のWebページ上でそれをすべて出力し、私は次のように使用してみました:

{リテラル}

{Include_php}

{PHP}

そして私は、自分のTPLに自分のPHPコードを入れる方法を見つけることができません。これは本当にイライラするようになり、私が望むのは、キャッシュファイルだけでPHPコードを残すことだけです。申し訳ありませんが、これはばかげた質問ですが、私はしばらくの間これを研究しています。 SmartyBCを実装してPHPインジェクションを引き続き使用できるようにするにはどうすればいいですか? SmartyBCを使用するのが悪い考えであれば、別のPHP関数ページを使用してテンプレートに表示される変数を設定する方法を教えてもらえますか?

答えて

0

Smartyは、プレゼンテーションロジックのテンプレートエンジンです。アプリケーションロジックをテンプレート内に配置することはできません。 Smartyの古いバージョンでは可能でしたが、もう幸いです。これらの関数をPHPファイルで実行し、その結果をテンプレートに渡します。

はい、SmartyBC:http://www.smarty.net/docs/en/bc.tplを使用できますが、それは既存のプロジェクトとの互換性のために使用されるはずです。それは本当に悪い考えであり、新しいプロジェクトに使うべきではありません。

0

なぜSmartyでphpを使いたいのですか?

論理をクラスまたは関数に入れ、コントローラ:Registry::get('view')->assign('smarty_variable', $data)を使用してデータを渡すと、うまくいきます。

0

データベースから必要なデータを取得するPHP関数を作成することができます。例えば。

function fn_get_company_goal($user_id) 
{  
    $company_id = db_get_field("SELECT company_id FROM ?:users WHERE user_id = ?i, $user_id"); 
    $goal = db_get_field("SELECT goal FROM ?:companies WHERE company_id = ?i, $company_id"); 
    return $goal; 
} 

あなたのアドオンに入れます。その後、あなたは次のようにSmartyテンプレートでそれを使用することができます。

{$goal = $user_id|fn_get_company_goal} 
+0

私はあなたに感謝しているしようとします。私は "myfunc.php"のような私の関数フォルダにPHPファイルを作成するだけで、それは自動的に呼び出されますか? – Jarrod

+0

My changesモジュールと次のファイルを使用できます。 app/addons/my_changes/func.php –