Smarty从控制器传递数据以查看和显示数据

时间:2016-06-04 13:15:47

标签: php smarty

我使用此功能从数据库获取数据,该功能正常。

static function dohvatiSveOlijeku($id){
    $baza = new Baza();

    $upit = "SELECT * FROM lijek WHERE status = 1 and lijek.id = " . $id;

    $rez = $baza->selectDB($upit);
    if($rez->num_rows == 0){
        return null;
    }else{
        $red = $rez->fetch_assoc();
        return $red;
    }
}

这是我的控制器,它使用参数 id 从模型中获取数据......

if (isset($_GET['id'])) {
$LijekSve = Lijek::dohvatiSveOlijeku($_GET['id']);
}


$Smarty->assign('lijek', $LijekSve);
$Smarty->display('view/lijek.tpl');

这是一个呈现给定数据的视图

{foreach from=$lijek item =lijekpodaci}
    <div>
        <p>{$lijekpodaci.cijena} kuna</p>
    </div>
{/foreach}

对于表格中的每个项目,我都会收到此错误

 Illegal string offset 'cijena' in C:\xampp\htdocs\ljekarna\smarty\libs\sysplugins\smarty_internal_templatebase.php(171) : eval()'d code on line 69 1 kuna

我也试过这个,但同样的错误显示

{$lijekpodaci['cijena']}

1 个答案:

答案 0 :(得分:1)

为什么不在循环之前尝试使用条件语句检查$ lijek数组是否为空?以下是:

    <?php
        // INITIALIZE $LijekSve TO AN EMPTY ARRAY JUST IN CASE $_GET['id'] ISN'T SET
        $LijekSve       = array();      
        if (isset($_GET['id'])) {
            $LijekSve   = Lijek::dohvatiSveOlijeku($_GET['id']);
        }

        $Smarty->assign('lijek', $LijekSve);
        $Smarty->display('view/lijek.tpl');
    ?>

<强> TEMPLATE

        {if !empty($lijek) }
            {foreach from=$lijek item =lijekpodaci}
                <div>
                    <p>{$lijekpodaci.cijena} kuna</p>
                </div>
            {/foreach}
        {/if}