使用装饰器

在Yii中,我们可以将内容封装到一个装饰器中。装饰器的常用方法是布局。当你使用你的控制器的渲染方法渲染一个视图的时候,Yii自动使用主布局装饰它。让我们创建一个简单的装饰器,它会正确的格式化引用。

准备

按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的应用。

如何做...

  1. 首先,我们将会创建一个装饰器文件@app/views/decorators/quote.php
<div class="quote">
    <h2>&ldquo;<?= $content?>&rdquo;, <?= $author?></h2>
</div>
  1. 现在,使用如下代码替换@app/views/site/index.php文件的内容:
<?php
use yii\widgets\ContentDecorator;
/* @var */
?>
<?php ContentDecorator::begin([
        'viewFile' => '@app/views/decorators/quote.php',
        'view' => $this,
        'params' => ['author' => 'S. Freud']
    ]
);?>
    Time spent with cats is never wasted.
<?php ContentDecorator::end();?>
  1. 现在,你的Home页面应该会如下所示:

工作原理...

装饰器非常简单。ContentDecorator::begin()ContentDecorator::end()之间的任何东西都会被渲染到一个$content变量中,并传递到一个装饰器模板中。然后,这个装饰器模板被渲染,并被插入到ContentDecorator::end()被调用的地方中。

我们可以使用ContentDecorator::begin()第二个参数传递额外的变量到装饰器模板中,例如之前的例子中我们传递了author变量。

注意我们使用了@app/views/decorators/quote.php作为视图路径。

参考

results matching ""

    No results matching ""