实施SmartyBC

时间:2016-05-24 18:54:27

标签: php templates smarty cs-cart

对于那些使用smarty的人来说,这只是一个小问题。我试图将PHP直接传递到我的代码中,但是当我这样做时,缓存版本会删除PHP并直接打印它。

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

这只会在我的网页上打印出来,所以我尝试使用以下内容:

{文字}

{Include_php}

{PHP}

我无法找到一种方法让我的PHP代码进入我的TPL我想要的方式。这变得非常令人沮丧,我想要的只是让我的缓存文件单独留下PHP代码。对不起,如果这是一个愚蠢的问题,但我已经研究了一段时间。我如何实现SmartyBC,以便我仍然可以使用PHP注入。如果使用SmartyBC是一个坏主意,有人可以给我一个如何使用单独的PHP函数页面设置变量以显示在模板中的愚蠢版本吗?

3 个答案:

答案 0 :(得分:0)

Smarty是仅用于表示逻辑的模板引擎。您不能将应用程序逻辑放在模板中。有可能在较旧版本的Smarty中,但幸运的是不再存在。只需在php文件中执行这些功能,并将结果传递给模板。

是的,您可以使用SmartyBC:http://www.smarty.net/docs/en/bc.tpl,但这应该用于与现有项目的兼容性。这是一个非常糟糕的主意,不应该用于新项目。

答案 1 :(得分:0)

为什么要在Smarty中使用php?

将你的逻辑放入一个类或函数中,并通过控制器传递数据:Registry::get('view')->assign('smarty_variable', $data),你就可以了。

答案 2 :(得分:0)

您可以创建从数据库中获取必要数据的PHP函数。 E.g。

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}