尝试使用SmartyViewRenderer模拟Yii中的视图文件

时间:2012-11-12 12:35:31

标签: php yii smarty

我想在Yii中使用SmartyViewRendere。我根据使用Smarty和Yii的说明完成了所有设置。

在我的应用程序中,我想渲染一个名为widgets_sidebar_template.tpl的模板

<h1>Widgets bewerken voor Sidebar #<?php echo $model->id; ?></h1>
<?php $this->render('widgets_sidebar_template', array(
        'available_widgets'=>$available_widgets
    )
) ?>

这很好用。

然后是widgets_sidebar_template.tpl文件:

$smarty->assign('availables', $available_widgets);
?>
<article id="widgets_container">
    <ul id="available_widgets" class="connect">
    <span>Beschikbaar</span><br><br>
    {foreach from=$availables key=k item=available}
        <li>{$available}</li>
    {/foreach}
    </ul>

    <ul id="active_widgets" class="connect">
        <span>Actief</span><br><br>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</article>

此文件提供错误

Undefined index: availables 

所以我要做的第一件事是我需要确保$ available_widgets是一个数组。所以我想出来了,我100%肯定它是一个包含数据的数组。然后我检查$ available_widgets是否实际分配给'availables'($ availables),所以我删除了:

$smarty->assign..

这给了我同样的错误,所以我的猜测是我在分配'availables'smarty数组时做错了。

我希望你们其中一个人可以根据这个英特尔给我一些建议。感谢:)

1 个答案:

答案 0 :(得分:1)

您无法在智能模板中使用$smarty->assign。此外,PHP标签在Smarty模板中不起作用。 我猜你在谈论这个SmartyRenderer:https://github.com/yiiext/smarty-renderer

最新版本需要Smarty版本3或更高版本,它可能不适用于Smarty 2。

对于您的模板,您可以使用以下语法在Smarty中分配变量值:

{$availables=$available_widgets}

在您的示例中,您甚至可以在foreach循环中使用$available_widgets