在yii2中,让你action参数支持POST数据的小方法
我们先来看一段代码
class RaController extends Controller { public $enableCsrfValidation = false; public function actionSay($username = '',$city = ''){ echo "{$username} 来自 {$city}"; } }
这里actionSay对应的url为index.php?r=ra/say,而 $username 和 $city 值的获取来自于url的参数,比如
index.php?r=ra/say&username=abei2017&city=洛阳
总结 在yii2中,action参数都是来自于GET。
但是有的时候你可能需要让action的参数来自于POST请求,怎么办?
重载runAction即可,yii2为控制器提供了runAction方法,它负责生成一个具体的Action对象并传递参数,我们可以通过复写它来实现,你可以看下yii2的生命周期来对其进行更好的了解。
那就开始干吧~,对上面的代码复写runAction
class RaController extends Controller { public $enableCsrfValidation = false; public function runAction($id, $params = []){ $params = ArrayHelper::merge(Yii::$app->request->post(),$params); return parent::runAction($id, $params); } public function actionSay($username = '',$city = ''){ echo "{$username} 来自 {$city}"; } }
复写了runAction后,它将作用于此控制器的所有action,当然你也可以通过runAction的$id来作用于某个action。比如
public function runAction($id, $params = []){ if($id == 'say'){ $params = ArrayHelper::merge(Yii::$app->request->post(),$params); } return parent::runAction($id, $params); }
现在去试试吧,对say动作提交POST数据username和city,成功接收。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
缓存架构之借助消息中间件RabbitMQ实现Redis缓存实时更新实战演练
缓存架构之借助消息中间件RabbitMQ实现Redis缓存实时更新实战演练 一、背景介绍 前面,我们花了大量的时间来介绍消息中间件RabbitMQ,讲了其基本使用,其可靠性传输,这些对我们的缓存架构有什么用呢,我们直接上图来分析下: 我们要实现这部分功能,需要借助两个系统: 广告管理系统:生产广告的地方 缓存服务系统:消费广告的地方 这两个独立的系统又有着紧密的联系,一个是生产者,一个是消费者,我们如何建立这两个系统的联系呢,我们生产的广告,如何及时能通知你来获取呢? 通过RabbitMQ我们就建立了广告管理系统与缓存服务系统实时交互的桥梁。 二、核心功能介绍 1、广告管理系统 功能:生产广告,并将生产信息实时同步给RabbitMQ 1)添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> <version>${spring-boot.versio...
- 下一篇
Dubbo日志打印剖析(自适配)
Dubbo 的日志打印机制 在以往的业务系统项目中,经常引入我们想接入的日志输出POM依赖, 利用相应的Logger API 输出日志或想打印的信息。但在依赖Spring Framework,Dubbo 或者其他项目时发现,只需要引入Logger相关Jar包依赖,就可以自适配Log 输出,利用适配后的日志输出系统打印相关信息。 它们的自适配是如何实现的呢? 这些框架是如何实现不同的日志系统与日志API解耦的 Dubbo自己实现了自己的日志打印系统 Spring Framework使用了 apache 的 commons-logging 来实现不同方式的日志打印与获取日志对象的解耦 首先分析下Dubbo源码的日志实现 Dubbo日志的调用方式,针对不同的日志打印系统,采用统一的API调用及输出,如: /** * ChannelListenerDispatcher * * @author william.liangf */ public class ChannelHandlerDispatcher implements ChannelHandler { private static fin...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- 2048小游戏-低调大师作品
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库