View ==== View is an important part of MVC and is reponsible for how data is presented to the end user. Basics ------ Yii uses PHP in view templates by default so in a web application a view typically contains some HTML, `echo`, `foreach` and such basic constructs. It may also contain widget calls. Using complex code in views is considered a bad practice. Such code should be moved to controller or widgets. View is typically called from controller action like the following: ```php public function actionIndex() { return $this->render('index', array( 'username' => 'samdark', )); } ``` First argument is the view name. In context of the controller Yii will search for its views in `views/site/` where `site` is controller ID. For details on how view name is resolved please refer to [yii\base\Controller::render] method. Second argument is data array that contains key-value pairs. Value is available in the view as a variable named the same as the corresponding key. So the view for the action above should be in `views/site/index.php` and can be something like: ```php

Hello, !

``` Intead of just scalar values you can pass anything else such as arrays or objects. Layout ------ Partials -------- Widgets ------- Security -------- One of the main security principles is to always escape output. If violated it leads to script execution and, most probably, to cross-site scripting known as XSS leading to leaking of admin passwords, making a user to automatically perform actions etc. Yii provides a good toolset in order help you escaping your output. The very basic thing to escape is a text without any markup. You can deal with it like the following: ```php
name); ?>
``` When you want to render HTML it becomes complex so we're delegating the task to excellent [HTMLPurifier](http://htmlpurifier.org/) library. In order to use it you need to modify your `composer.json` first by adding the following to `require`: ```javascript "ezyang/htmlpurifier": "v4.5.0" ``` After it's done run `php composer.phar install` and wait till package is downloaded. Now everything is prepared to use Yii's HtmlPurifier helper: ```php
text); ?>
``` Note that besides HTMLPurifier does excellent job making output safe it's not very fast so consider [caching result](caching.md). Alternative template languages ------------------------------ There are offlicial extensions for [Smarty](http://www.smarty.net/) and [Twig](http://twig.sensiolabs.org/). In order to learn more refer to [Using template engines](template.md) section of the guide.