首页 > 开发 > Php > 正文

PHP的Yii框架中创建视图和渲染视图的方法详解

2020-02-21 20:50:19
字体:
来源:转载
供稿:网友

视图是 MVC 模式中的一部分。 它是展示数据到终端用户的代码,在网页应用中,根据视图模板来创建视图,视图模板为PHP脚本文件, 主要包含HTML代码和展示类PHP代码,通过yii/web/View应用组件来管理, 该组件主要提供通用方法帮助视图构造和渲染,简单起见,我们称视图模板或视图模板文件为视图。

创建视图

如前所述,视图为包含HTML和PHP代码的PHP脚本,如下代码为一个登录表单的视图, 可看到PHP代码用来生成动态内容如页面标题和表单,HTML代码把它组织成一个漂亮的HTML页面。

<?phpuse yii/helpers/Html;use yii/widgets/ActiveForm;/* @var $this yii/web/View *//* @var $form yii/widgets/ActiveForm *//* @var $model app/models/LoginForm */$this->title = 'Login';?><h1><?= Html::encode($this->title) ?></h1><p>Please fill out the following fields to login:</p><?php $form = ActiveForm::begin(); ?>  <?= $form->field($model, 'username') ?>  <?= $form->field($model, 'password')->passwordInput() ?>  <?= Html::submitButton('Login') ?><?php ActiveForm::end(); ?>

在视图中,可访问 $this 指向 yii/web/View 来管理和渲染这个视图文件。

除了 $this之外,上述示例中的视图有其他预定义变量如 $model, 这些变量代表从控制器或其他触发视图渲染的对象 传入 到视图的数据。

技巧: 将预定义变量列到视图文件头部注释处,这样可被IDE编辑器识别,也是生成视图文档的好方法。
安全

当创建生成HTML页面的视图时,在显示之前将用户输入数据进行转码和过滤非常重要, 否则,你的应用可能会被跨站脚本 攻击。

要显示纯文本,先调用 yii/helpers/Html::encode() 进行转码,例如如下代码将用户名在显示前先转码:

<?phpuse yii/helpers/Html;?><div class="username">  <?= Html::encode($user->name) ?></div>

要显示HTML内容,先调用 yii/helpers/HtmlPurifier 过滤内容,例如如下代码将提交内容在显示前先过滤:

<?phpuse yii/helpers/HtmlPurifier;?><div class="post">  <?= HtmlPurifier::process($post->text) ?></div>

技巧:HTMLPurifier在保证输出数据安全上做的不错,但性能不佳,如果你的应用需要高性能可考虑 缓存 过滤后的结果。

组织视图

与 控制器 和 模型 类似,在组织视图上有一些约定:

控制器渲染的视图文件默认放在 @app/views/ControllerID 目录下, 其中 ControllerID 对应 控制器 ID, 例如控制器类为PostController,视图文件目录应为 @app/views/post, 控制器类 PostCommentController对应的目录为@app/views/post-comment, 如果是模块中的控制器,目录应为 yii/base/Module::basePath 模块目录下的views/ControllerID 目录;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表