博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在yii2中,让你action参数支持POST数据的小方法
阅读量:6906 次
发布时间:2019-06-27

本文共 1154 字,大约阅读时间需要 3 分钟。

我们先来看一段代码

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对象并传递参数,我们可以通过复写它来实现,你可以看下来对其进行更好的了解。

那就开始干吧~,对上面的代码复写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,成功接收。

转载地址:http://dumdl.baihongyu.com/

你可能感兴趣的文章
Socket编程大总结
查看>>
如何增加自己命中没有的福报
查看>>
笔记本电脑连不上无线网怎么办?
查看>>
Shard 分片集群
查看>>
MySQL数据备份和恢复工具大全
查看>>
sql 学习!!!
查看>>
全球最便宜的八核手机 - 小采手机? 吸引眼球!
查看>>
shell练习-对指定目录下的符合条件的文件执行操作
查看>>
SQOOP2 连接 Oracle 数据库为什么会报错?
查看>>
Go by Example: Variables
查看>>
Java语言下ICTCLAS分词系统的bug问题
查看>>
【Windows系统】用户配置文件删除
查看>>
myprintf
查看>>
JQuery之动画与特效
查看>>
最常用的图形接口:VNC
查看>>
log4j日志异步化大幅提升系统性能
查看>>
C#数据类型转换
查看>>
sqlplus查询数据时,显示乱码的解决办法
查看>>
SDN面临的非技术性挑战
查看>>
苦逼的光网络终获新生:数据中心互联市场去年超25亿美元
查看>>