[英]How to extend db connection in modifier function in smarty
我經常使用smarty修飾符,有時某些功能需要連接到數據庫,但似乎無法擴展父級php連接設置,我需要連接MySQL本身,
// connect function
$smarty->assign('datas', $datas');
$smarty->display('template.tpl');
{if $datas}
{foreach $datas as $data}
echo {$data|my_function}
{/foreach}
{/if}
function smarty_modifier_my_function($src) {
// connect function
// do something
}
這是否意味着如果我有10個數據,此頁面請求數據庫連接11次? 如何做同樣的事情只要求一個數據庫連接。
我同意Foobar的看法,他說您的“視圖”不應包含數據庫連接,因此我建議您使用另一種解決方案來解決您的問題:
創建一個對象,該對象使用包含按鈕規范的屬性來映射數據。 可以按照以下步驟進行操作:
的PHP
// Define a class that maps your data
class myClass
{
public $id;
public $a; // your data keys here
public $b; // your data keys here
public $some_button;
public function __construct($data)
{
$this->id = $data['id'];
$this->a = $data['a'];
$this->b = $data['b'];
$this->set_some_button($data['id']);
}
protected function set_some_button($id) {
if ($id == 1)
$this->some_button = 'button1';
elseif ($id == 2)
$this->some_button = 'button2';
else
$this->some_button = 'button0';
}
}
// Create an array of objects that maps your datas
$objects = array();
foreach ($datas as $data) {
$objects[] = new myClass($data);
}
// Pass this array to the view
$smarty->assign('objects', $objects);
$smarty->display('template.tpl');
模板
// access your data as follow
{foreach $objects as $obj}
{$obj->id}
{$obj->a}
{$obj->b}
{$obj->some_button}
{/foreach}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.