回答

收藏

yii使用smart语法

店滴CMS 店滴CMS 1068 人阅读 | 0 人回复 | 2021-02-02

模板语法

学习Smarty模板语法的最佳资源是其官方文档,您可以在www.smarty.net找到 。另外,下面还介绍了Yii特定的语法扩展。

设置对象属性

有一个称为的特殊功能set,可让您设置视图和控制器的通用属性。目前可用的属性titletheme以及layout

{set title="My Page"}
{set theme="frontend"}
{set layout="main.tpl"}

对于标题,还有一个专用块:

{title}My Page{/title}

设置元标记

可以将元标签设置如下:

{meta keywords="Yii,PHP,Smarty,framework"}

还有一个专用的块用于描述:

{description}This is my page about Smarty extension{/description}

调用对象方法

有时候你需要打电话

使用小部件作为函数和块导入静态类

您可以直接在模板中导入其他静态类:

{use class="yii\helpers\Html"}
{Html::mailto('eugenia@example.com')}

如果需要,可以设置自定义别名:

{use class="yii\helpers\Html" as="Markup"}
{Markup::mailto('eugenia@example.com')}

扩展有助于以方便的方式使用小部件,将其语法转换为函数调用或块。对于常规小部件,可以使用如下功能:

{use class='@yii\grid\GridView' type='function'}
{GridView dataProvider=$provider}

对于具有beginend方法(例如ActiveForm)的小部件,最好使用block:

{use class='yii\widgets\ActiveForm' type='block'}
{ActiveForm assign='form' id='login-form' action='/form-handler' options=['class' => 'form-horizontal']}
    {$form->field($model, 'firstName')}
    <div class="form-group">
        <div class="col-lg-offset-1 col-lg-11">

        </div>
    </div>
{/ActiveForm}

如果您经常使用特定的小部件,则最好在应用程序配置中对其进行声明并{use class 从模板中删除调用:

'components' =&gt; [
    'view' =&gt; [
        // ...
        'renderers' =&gt; [
            'tpl' =&gt; [
                'class' =&gt; 'yii\smarty\ViewRenderer',
                'widgets' =&gt; [
                    'blocks' =&gt; [
                        'ActiveForm' =&gt; '\yii\widgets\ActiveForm',
                    ],
                ],
            ],
        ],
    ],
],

引用其他模板

includeextends语句中引用模板的方式主要有两种:

{include 'comment.tpl'}
{extends 'post.tpl'}

{include '@app/views/snippets/avatar.tpl'}
{extends '@app/views/layouts/2columns.tpl'}

在第一种情况下,将相对于当前模板路径搜索视图。对于comment.tplpost.tpl 这意味着将在与当前渲染的模板相同的目录中搜索这些文件。

在第二种情况下,我们使用路径别名。@app默认情况下,所有Yii别名(例如)都可用。

CSS,JavaScript和资产捆绑

为了注册JavaScript和CSS文件,可以使用以下语法:

{registerJsFile url='http://maps.google.com/maps/api/js?sensor=false' position='POS_END'}
{registerCssFile url='@assets/css/normalizer.css'}

如果直接在模板中需要JavaScript和CSS,则有一些方便的块:

{registerJs key='show' position='POS_LOAD'}
    $("span.show").replaceWith('<div class="show">');
{/registerJs}

{registerCss}
div.header {
    background-color: #3366bd;
    color: white;
}
{/registerCss}

资产捆绑包可以通过以下方式注册:

{use class="yii\web\JqueryAsset"}
{JqueryAsset::register($this)|void}

这里我们使用void修饰符,因为我们不需要方法调用结果。

网址

您可以使用两个函数来构建URL:

<a href="http://%7Bpath%20route='blog/view'%20alias=%24post.alias%7D" target="_blank">{$post.title}</a>
<a href="http://%7Burl%20route='blog/view'%20alias=%24post.alias%7D" target="_blank">{$post.title}</a>

path生成相对URL,而url生成绝对URL 。内部都使用\ yii \ helpers \ Url。

附加变量

在Smarty模板中,始终定义以下变量:

  • $app,等于 \Yii::$app
  • $this,等于当前View对象

访问配置参数

可以通过Yii::$app-&gt;params-&gt;something以下方式使用应用程序中可用的Yii参数:

`{#something#}`

</div>

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

21813 积分
108 主题
+ 关注
热门推荐