文档章节

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

阿北2017
 阿北2017
发布于 09/26 11:59
字数 344
阅读 206
收藏 0
Yii

我们先来看一段代码

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,成功接收。

© 著作权归作者所有

共有 人打赏支持
阿北2017
粉丝 65
博文 56
码字总数 72253
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Spring中static变量不能@value注入的原因

今天本想使用@Value的方式使类中的变量获得yml文件中的配置值,然而一直失败,获得的一直为null。 类似于这样写的。 public class RedisShardedPool { private static ShardedJedisPool pool...

钟然千落
今天
2
0
CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部