Yii2—视图(View)

本文详细介绍了Yii2框架中的视图(View)部分,包括基本定义、部件(Widget)、安全、模板引擎等11个关键知识点,并通过代码示例展示了如何设置页面标题、注册链接标签、注册CSS和脚本、以及使用不同方法渲染模板。
摘要由CSDN通过智能技术生成

视图(View)

视图(View)这一部分比较多,总共包括11个知识点:

  • 基本定义
  • 部件(Widget)
  • 安全
  • 模板引擎
  • 在模板中使用视图对象
    • 设置页面标题
    • 添加meta标签
    • 注册连接标签
    • 注册CSS
    • 注册脚本
    • 注册asset bundles
  • 布局(Layout)
  • 局部(Partial)
  • 访问上下文
  • 静态页面
  • 缓存区块
  • 自定义视图组件
1、基本定义
视图基本上就是我们所说的在views文件夹中的显示前台页面的模板。 另外还有一个对应的视图类(yii\web\view)这个是在Yii2中新增加的,我们在views中的模板文件中看到的$this对象就是Yii2中的视图对象。 我们下面就用模板来称呼前台view中的视图,以便和yii\web\view这个视图类混淆。
默认情况下,Yii使用php语言来解析模板,也就是说在views中的模板里面直接用php代码来输出数据。
在模板页面最好不要包含复杂的php逻辑代码,应该尽可能的把它们放到控制器或者部件里面去实现。
模板一般在控制器中的动作(Action)里执行 render()方法的时候调用。
  1. public function actionIndex()
  2. {
  3.     return $this->render('index', ['username' => 'samdark']);
  4. }
render()的第一个参数是要使用的模板的名称。
在这里只需要添加模板的文件名就可以了,不用加路径以及后缀。Yii会在当前控制器的 ID(如 site)目录下搜索这个模板文件。
如当前控制器是SiteController,那个将会在views/site目录下面搜索index文件。
如果想知道Yii是怎样查找视图文件的可以查看 yii\base\Controller::render()
第二个参数是一个name-value的数组。这个数组会直接传递到views目录中的模板文件里面,并且name可直接作为php变量来引用,value就是对应的变量的值。如上面的index视图文件为 views/site/index.php
  1. <p>Hello, <?= $username ?>!</p>
任意类型的数据都可以传递到view视图中,包含数组和对象。
除了上面说的render()方法外,在yii\web\Controller中还有几种加载视图的方法:
  • render():渲染一个模板,然后对渲染的结果应用布局文件。这个是通常用来渲染一个完整的页面。
  • renderPartial():仅仅渲染一个模板,不对渲染的结果使用布局文件。通常用来渲染页面的局部。
  • renderAjax():也是只渲染模板,不使用布局文件,但会加载所有注册的js/css等脚本文件。通常把渲染的html代码作为Ajax请求的响应。
  • renderFile()渲染一个模板文件,基本和renderPartial()功能一样,只不过这里要求的是文件的路径而不是文件的名称。
2、部件(Widget)
部件是视图中的独立的区块,用来把一些复杂的逻辑、页面显示及相应的功能实到一个独立的组件中。
Yii内置很多常用的部件,如表单(active form),面包屑(breadcrumbs),菜单(menu)以及对bootstrap的包装。另外在某些扩展组件中也提供了部件,如官方的jQueryUI组件。
下面是在视图文件中使用部件的例子:
  1. // Note that you have to "echo" the result to display it
  2. //输出部件Menu中的内容
  3. echo \yii\widgets\Menu::widget(['items' => $items]);

  4. // Passing an array to initialize the object properties
  5. //可往部件中传递参数来初始化部件
  6. $form = \yii\widgets\ActiveForm::begin([
  7.     'options' => ['class' => 'form-horizontal'],
  8.     'fieldConfig' => ['inputOptions' => ['class' => 'input-xlarge']],
  9. ]);
  10. ... form inputs here ...
  11. \yii\widgets\ActiveForm::end();
在第一个例子中仅仅只调用 widget()方法来输出内容。第二个例子中 begin()
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值