2016-05-24 7 views
0

Nur eine kleine Frage für alle da draußen, die Smarty verwendet. Ich versuche, PHP direkt in meinen Code zu übertragen, aber wenn ich das tue, schneidet die zwischengespeicherte Version das PHP aus und druckt es gerade so direkt.Implementieren von 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; 
?> 

Dies druckt nur alle auf meiner Webseite aus, so habe ich versucht, mit dem folgenden:

{literal}

{include_php}

{php}

Und ich kann einfach keinen Weg finden, meinen PHP-Code in meine TPL zu bringen, so wie ich es möchte. Das wird wirklich frustrierend und alles, was ich will, ist, dass meine Cache-Dateien den PHP-Code alleine lassen. Tut mir leid, wenn das eine dumme Frage ist, aber ich habe das schon eine Weile erforscht. Wie implementiere ich SmartyBC, damit ich noch PHP-Injektionen verwenden kann? Und wenn SmartyBC eine schlechte Idee ist, kann mir jemand eine heruntergekommene Version geben, wie man eine separate PHP-Funktionsseite benutzt, um Variablen einzustellen, die im Template angezeigt werden sollen?

Antwort

0

Smarty ist eine Vorlagen-Engine nur für die Präsentationslogik. Sie können keine Anwendungslogik in eine Vorlage einfügen. In älteren Versionen von Smarty war das glücklicherweise nicht mehr möglich. Führen Sie diese Funktionen in einer PHP-Datei aus und übergeben Sie das Ergebnis an die Vorlage.

Und ja, Sie können SmartyBC verwenden: http://www.smarty.net/docs/en/bc.tpl, aber das soll für die Kompatibilität mit bestehenden Projekten verwendet werden. Es ist eine wirklich schlechte Idee und sollte nicht für neue Projekte verwendet werden.

0

Warum möchten Sie PHP in Smarty verwenden?

Setzen Sie Ihre Logik in eine Klasse oder Funktion und übergeben Sie die Daten über den Controller: Registry::get('view')->assign('smarty_variable', $data), und Sie sind gut zu gehen.

0

Sie können PHP-Funktion erstellen, die notwendige Daten aus der Datenbank erhält. Z.B.

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; 
} 

Legen Sie es zu Ihrem Addon. Dann können Sie es in der Smarty-Vorlage auf folgende Weise verwenden:

+0

Ich werde versuchen, dass ich danke Ihnen. Erstelle ich einfach eine PHP-Datei in meinem Funktionsordner wie "myfunc.php" und es wird dann einfach automatisch aufgerufen? – Jarrod

+0

Sie können das Modul Meine Änderungen und die folgende Datei verwenden: app/addons/my_changes/func.php –