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