如何在YII2框架中使用behavior
本篇文章给大家分享的是有关如何在YII2框架中使用behavior,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。
行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为。
注意行为是对功能的扩展,不要乱用行为,比如有一个动物类和一个人类,他们各自有自已的名称,身高,体重,这些是属性。
他们都会跑,这个时候我们就可以抽象出来做成一个跑的行为,根据不同需求来扩展他们。
这里我们有两个控制器一个GoodsController,一个OrderController,他们都接收请求,返回数据给客户端,不过有的需要返回json,有的需要返回xml。
那么我们就创建一个返回数据行为来扩展这两个控制器。
我们在项目目录下创建common目录,并创建ReturnBehavior.php,代码如下:
'returnData', ]; } //返回数据 publicfunctionreturnData() { switch($this->return_type){ case'json': YII::$app->response->format=Response::FORMAT_JSON; break; case'xml': YII::$app->response->format=Response::FORMAT_XML; break; case'html': YII::$app->response->format=Response::FORMAT_HTML; break; default: break; } } //定义方法 publicfunctiontest(){ echo'returnBehaviortest...'; } }
然后我们在两个控制器中配置behaviors()来使用行为:
GoodsController.php代码如下:
[ 'class'=>ReturnBehavior::className(), 'return_type'=>'json', ], ]; } //获取商品列表 publicfunctionactionGetGoodsList() { return[ ['id'=>1,'name'=>'商品1'], ['id'=>2,'name'=>'商品2'], ]; } publicfunctionactionIndex() { //控制器调用行为中的方法 $this->getBehavior('returnBehavior')->test(); //注意这里,因为使用了行为,方法执行后会设置返回内容为xml,我们重新设置为html $this->getBehavior('returnBehavior')->return_type='html'; } }
OrderController.php代码如下:
[ 'class'=>ReturnBehavior::className(), 'return_type'=>'xml', ], ]; } //获取商品列表 publicfunctionactionGetOrderList() { return[ ['id'=>1,'name'=>'订单1'], ['id'=>2,'name'=>'订单2'], ]; } publicfunctionactionIndex() { //控制器调用行为中的方法 $this->getBehavior('returnBehavior')->test(); //注意这里,因为使用了行为,方法执行后会设置返回内容为xml,我们重新设置为html $this->getBehavior('returnBehavior')->return_type='html'; } }
这个时候我们在地址栏访问/goods/get-goods-list和/order/get-order-list,结果如下:
然后我们访问/goods/index和/order/index,行为方法成功调用,结果如下:
以上就是如何在YII2框架中使用behavior,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。
推荐阅读
-
怎么在Yii2中实现关联查询
今天就跟大家聊聊有关怎么在Yii2中实现关联查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
怎么在YII2框架中利用UEditor编辑器发布文章
今天就跟大家聊聊有关怎么在YII2框架中利用UEditor编辑器发布文章,可能很多人都不太了解,为了让大家更加了解,小编给大家总结...
-
怎么在YII2框架中使用RBAC控制模块
这期内容当中小编将会给大家带来有关怎么在YII2框架中使用RBAC控制模块,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇...
-
怎么在YII2框架中使用ActiveDataProvider和GridView
这篇文章给大家介绍怎么在YII2框架中使用ActiveDataProvider和GridView,内容非常详细,感兴趣的小伙伴们可...
-
怎么在YII2框架中使用控制台命令
本篇文章给大家分享的是有关怎么在YII2框架中使用控制台命令,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有...
-
如何在YII2框架中使用Query()查询生成器
这篇文章将为大家详细讲解有关如何在YII2框架中使用Query()查询生成器,文章内容质量较高,因此小编分享给大家做个参考,希望大...
-
YII2全局异常处理的示例分析
这篇文章主要介绍了YII2全局异常处理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下...