yii2添加行为之Yii->$app->request->request()通用地去获取post|get请求

添加行为

举例子:yii1有通用地获取不论是get还是post的请求

 Yii::app->request->getParam('id’)

但是yii2没有,它只有如下:

Yii::$app->request->getQueryParams();//获取get所有参数

Yii::$app->request->getQueryParam('id');//获取get中某个参数

Yii::$app->request->getBodyParams();//获取post所有参数

Yii::$app->request->getBodyParam('id');//获取post中某个参数

那么我可以通过行为绑定一个使之满足:

Yii::$app->request->request();//获取请求的所有参数

Yii::$app->request->request('id');//获取请求的某个参数

 

步骤:

1、config/web.php 添加这个行为


2、项目根目录下新建一个文件夹,命名为components或者common,我这里命名为common,里面新建一个类

<?php

namespace app\common;

use yii\base\Behavior;
use yii\helpers\ArrayHelper;

/**
 * Class HttpRequstMethod
 *
 * @$_REQUEST = GET + POST
 */
class HttpRequstMethod extends Behavior
{
    private static $_data = [];
    public function request($name = null)
    {
        $request = \Yii::$app->request;
        if (!self::$_data)
        {
            self::$_data = ArrayHelper::merge($request->getBodyParams(), $request->getQueryParams());
        }

        return self::$_data[$name] ?? self::$_data;
    }
}

3、为了支持输入Yii::$app->request->自动补全列表里有request,项目根目录/widgets下新建_ide_helper.php

<?php
namespace yii\web{

    use app\common\HttpRequstMethod;

    /**
     * Class Request
     *
     * @mixin HttpRequstMethod
     * @mixin Request
     * @package yii\web
     */
    class Request {}
}
到此,任何地方都可以通过如下通用地调用所有请求参数或者某个请求参数了!

Yii::$app->request->request();//获取请求的所有参数

Yii::$app->request->request('id');//获取请求的某个参数


 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值