原 荐 在yii2中,让你action参数支持POST数据的小方法

栏目: PHP · 发布时间: 6年前

原 荐 在yii2中,让你action参数支持POST数据的小方法

在yii2中,让你action参数支持POST数据的小方法

  阿北2017 发布于 17分钟前

字数 344

阅读 2

收藏 0

Yii

开发十年,就只剩下这套 Java 开发体系了 >>> 原 荐 在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,成功接收。

© 著作权归作者所有

共有人打赏支持

原 荐 在yii2中,让你action参数支持POST数据的小方法

阿北2017

粉丝 62

博文 55

码字总数 69330

作品 0

洛阳

相关文章 最新文章

yii2开发中19条推荐实践(阿北总结)

虽然每个人的编程风格不同,但是有些建议能让你的代码更加规范和稳定,本次就我这次网站更新总结如下几点,希望对你的yii2学习和使用有所帮助。 环境说明 服务器环境: CentOS 开发环境及IDE...

阿北2017

06/02

0

0

记录Yii2框架开发遇到微信错误提示

转载地址 记录Yii2框架开发遇到微信错误提示 微信公共号开发,提示“该公众号暂时无法提供服务,请稍后再试”,如何解决? 以前使用Yii框架的时候,并没有像Yii2,以前的Yii框架似乎用起来在...

durban

07/22

0

0

学习 yii 框架 – 使用简单的动作过滤器

这里我讲一下在yii框架中如何使用简单的过滤器(filter). yii 框架 提供了很好的动作(action)过滤,使用的方法也很简单,例如: 只有通过 POST 请求才能访问 post/delete 页面,只需在控制器的...

首席烤地瓜

2012/10/29

0

0

Yii--Hello World!

一般学习新的东西都会说声Hello World!,今天我再说一次Hello World!,不过这次是用Yii框架来实现的。 首先让访问时默认显示“Hello”,需要创建一个 say 操作,从请求中接收 message 参数...

高万耀

06/26

0

0

kindeditor整合进yii框架

/** * kindeditor * 源文件 : www/js/kindeditor/ * 功能 : 富文本编辑器,优于ckeditor,支持多种显示插入代码的样式。 * 形式 : 现以components的方式整合到yii中(修改自其自带的php demo)...

wedv

2014/02/18

0

0

没有更多内容

加载失败,请刷新页面

加载更多
#mysql50# not Exist

data 目录有中文名称,可能是复制的"复件...."

少年不搬砖老大徒伤悲

8分钟前

0

0

在yii2中,让你action参数支持POST数据的小方法

我们先来看一段代码 class RaController extends Controller { public $enableCsrfValidation = false; public function actionSay($username = '',$city = ''){ echo "{$......

阿北2017

17分钟前

2

0

macOS 10.14 Mojave

在近日发布的 macOS 10.14 Mojave 操作系统中,有人发现它(在某些机型中)悄然禁用了先前的「次像素平滑渲染」选项,导致部分(尤其是使用非高分辨率显示器)用户觉得字体比先前的更细更难看...

火力全開

21分钟前

0

0

 实现分布式锁的正确姿势

实现分布式锁的正确姿势 原理分析 最近看到好多博主都在推分布式锁,实现方式很多,基于db、 redis 、zookeeper。zookeeper方式实现起来比较繁琐,这里我们就谈谈基于redis实现分布式锁的正确实...

DemonsI

26分钟前

0

0

微信小程序 、支付宝小程序、百度小程序和钉钉e应用的汇总

2018年9月25日 百度小程序开放企业申请 微信小程序:现在微信小游戏都热火朝天了,而且已经有了云开发,包括提供的能力、文档、社区等都相对完善,也有相关的变现方式; 支付宝小程序:https...

to_be_better

29分钟前

0

0

没有更多内容

加载失败,请刷新页面

加载更多

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Perl语言编程

Perl语言编程

[美] Larry Wall、Tom Christiansen、Jon Orwant / 何伟平 / 中国电力出版社 / 2001-12 / 129.00元

这不仅仅是一本关于Perl的书籍,更是一本独一无二的开发者自己介绍该语言及其文化的书籍。Larry Wall是Perl的开发者,他就这种语言的未来发展方向提出了自己的看法。Tom Christiansen是最早的几个拥护者之一,也是少数几个在错综复杂的中游刃有余的人之一。Jon Orwant是《Perl Journal》的主编,该杂志把Perl社区组合成了一个共同的论坛,以进行Perl新的开发。一起来看看 《Perl语言编程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码