2016-05-24 1 views
0

Juste une petite question pour quiconque utilise smarty. J'essaie de transmettre PHP directement dans mon code, mais quand je le fais, la version en cache supprime le PHP et l'imprime directement comme ça.Implémentation de 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; 
?> 

Cette juste imprime tout cela sur ma page web, donc j'essayé d'utiliser les éléments suivants:

{literal}

{include_php}

{php}

Et je ne peux pas trouver un moyen d'obtenir mon code PHP pour entrer dans mon TPL comme je le veux. Cela devient vraiment frustrant et tout ce que je veux, c'est que mes fichiers cache laissent le code PHP tranquille. Désolé si c'est une question stupide mais j'ai fait des recherches pendant un moment. Comment puis-je implémenter SmartyBC pour pouvoir continuer à utiliser les injections PHP? Et si l'utilisation de SmartyBC est une mauvaise idée, quelqu'un peut-il me donner une version simplifiée de l'utilisation d'une page de fonction PHP séparée pour définir les variables à afficher dans le modèle?

Répondre

0

Smarty est un moteur de template pour la logique de présentation uniquement. Vous ne pouvez pas placer la logique d'application dans un modèle. C'était possible dans les anciennes versions de Smarty mais heureusement plus maintenant. Exécutez simplement ces fonctions dans un fichier php et transmettez le résultat au modèle.

Et oui, vous pouvez utiliser SmartyBC: http://www.smarty.net/docs/en/bc.tpl, mais cela est supposé être utilisé pour la compatibilité avec les projets existants. C'est une très mauvaise idée et ne devrait pas être utilisé pour de nouveaux projets.

0

Pourquoi voulez-vous utiliser php dans Smarty? Mettez votre logique dans une classe ou une fonction, et passez les données via le contrôleur: Registry::get('view')->assign('smarty_variable', $data), et vous êtes prêt à partir.

0

Vous pouvez créer une fonction PHP qui obtient les données nécessaires de la base de données. Par exemple.

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

Mettez le à votre addon. Ensuite, vous pouvez l'utiliser dans le modèle Smarty de la manière suivante:

{$goal = $user_id|fn_get_company_goal} 
+0

Je vais essayer cela merci. Est-ce que je crée juste un dossier de PHP dans mon dossier de fonctions tel que "myfunc.php" et alors il appellera juste automatiquement? – Jarrod

+0

Vous pouvez utiliser le module Mes modifications et le fichier suivant: app/addons/my_changes/func.php –