上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 would 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 code line 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 code 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. Openprotected/views/site/index.php
and add the following code:<?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 a "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 the 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 Using the controller context in a view recipe