上QQ阅读APP看书,第一时间看更新
Using clips
One of the Yii features you can use in your views is clips. The basic idea is that you can record some output and then reuse it later in a view. A good example will be defining additional content regions for your layout and filling them elsewhere.
Getting ready
Set up a new application using yiic webapp
.
How to do it...
- For our example, we need to define two regions in our layout:
beforeContent
andfooter
. Openprotected/views/layouts/main.php
and insert the following just before the content output (<?php echo $content; ?>
):<?php if(!empty($this->clips['beforeContent'])) echo $this->clips['beforeContent']?>
Then, insert the following into
<div id="footer">
:<?php if(!empty($this->clips['footer'])) echo $this->clips['footer']?>
- That is it. Now, we need to fill these regions somehow. We will use a controller action for the
beforeContent
region. Openprotected/controllers/SiteController.php
and add the following toactionIndex
:$this->beginClip('beforeContent'); echo 'Your IP is '.Yii::app()->request->userHostAddress; $this->endClip();
- As for footer, we will set its content from a view. Open
protected/views/site/index.php
and add the following:<?php $this->beginClip('footer')?> This application was built with Yii. <?php $this->endClip()?>
- Now, when you open your website's index page, you should get your IP just before the page content and "built with" note in the footer.
How it works...
We mark regions with the code that just checks for existence of a clip specified and, if clip exists, the code outputs it. Then, we record content for clips we defined using special controller methods named beginClip
and endClip
.
See also
- The recipe named Using controller context in a view in this chapter