Home >Backend Development >PHP Tutorial >Yii Framework Official Guide Series 9 - Basics: Views
A view is a PHP script that contains the main user interaction elements. It can contain PHP statements, but we recommend that these statements do not change the data. model, and it is best to keep it simple (only as a view). In order to achieve separation of logic and interface, large sections of logic should be placed in the controller or model rather than in the view.
The view has a name, and when rendering (render), the name will be used to identify the view script file. The name of the view is the same as the name of its view script. For example: the name of the view edit
comes from a script file named edit.php. To render, you need to call CController::render by passing the name of the view. (). This method will search for the corresponding view file in the protected/views/ControllerID directory.
Inside the view script, we can access the controller instance through $this. We can use $this-> propertyName or get any property of the controller.
We can also use the following push method to pass data to the view:
$this->render('edit', array( 'var1'=>$value1, 'var2'=>$value2, ));
In the above method, the render() method will extract the second parameter of the array into a variable. The result is that in the view script, we can directly access the variables $var1 and $var2.
Layout is a special view file used to modify the view. It usually contains a common part of the view in the user interface. For example: the layout can include header and footer part, and then embed the content within it.
##
......header here...... <?php echo $content; ?> ......footer here......
$content stores the content The rendering result of the view.
protected/views/layouts/main.php is the default layout file. This can be customized by changing CWebApplication::layout or CWebApplication::layout.
To render a view without layout, you need to call renderPartial() .
<?php $this->beginWidget('path.to.WidgetClass'); ?> ...可能会由小物件获取的内容主体... <?php $this->endWidget(); ?>or
<?php $this->widget('path.to.WidgetClass'); ?>The latter is used for components that do not require any body content. Widgets can customize their performance through configuration. This is done by calling CBaseController::beginWidget or CBaseController::widget to set its initialization property value. For example, when using the CMaskedTextField widget, we want to specify the mask to be used (which can be understood as an output format). We do this by passing an array carrying the initialization values of these properties. The key of the array here is the name of the attribute, and the value of the array is the value corresponding to the small object attribute. As shown below:
<?php $this->widget('CMaskedTextField',array( 'mask'=>'99/99/9999' )); ?>Inherit CWidget and override its init() and run() methods, you can define a New widgets:
class MyWidget extends CWidget { public function init() { // 此方法会被 CController::beginWidget() 调用 } public function run() { // 此方法会被 CController::endWidget() 调用 } }##A widget can have its own view just like a controller
. By default, the view files of small objects are located under the views subdirectory of the directory containing the small object class files. These views can be rendered by calling CWidget::render(), much like controllers. The only difference is that the widget's view does not have layout file support. In addition, $this
in the widget view points to the widget instance rather than the controller instance. 3. System view
The naming of system views follows some rules. For example, a name like
errorXXX is used to render the CHttpException view showing the error number XXX
. For example, if CHttpException throws a 404 error, then error404
will be displayed. Under
, Yii provides a series of default system views. They can be customized
by creating a view file with the same name under protected/views/system.
The above is the Yii Framework Official Guide Series 9 - Basic Knowledge: View Contents. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!