美文网首页
PHP Laravel学习之HTTP请求参数获取

PHP Laravel学习之HTTP请求参数获取

作者: 唐朝早晨 | 来源:发表于2018-08-02 21:35 被阅读0次

    官方文档传送门:http://laravelacademy.org/post/7856.html


    依赖

    在A类中有B类的实例,则称A对B有一个依赖

    依赖注入

    在A类中获取到的B类的实例是通过外部传进来的这种就称作依赖注入

    访问请求实例

    在控制器中获取当前请求实例,只需要在构造方法或普通方法中对Illuminate\Http\Request 类进行依赖注入即可,具体实现如下:
    在App\Http\Controllers\UserController.php控制器下的store方法进行依赖注入获取当前请求的name值

    public function store(Request $request){
            $name = $request -> input('name');
            echo "$name";
        }
    

    创建控制器路由访问该控制器下的store方法:

    Route::get('store','UserController@store');
    

    浏览器中输入:http://localhost:8000/store?name=12,结果如下:

    获取到请求中的name

    路由参数

    如果还期望在控制器方法中获取路由参数,只需要将路由参数置于其它依赖之后即可,具体实现如下:
    在App\Http\Controllers\UserController.php控制器中通过依赖注入获取路由里的参数
    我们稍微对上述store方法和路由进行一下小小的修改:

    //store方法修改为
    public function store(Request $request,$id){
            $name = $request -> input('name');
            echo "name:$name  "."  id:$id";
        }
    //web.app下路由修改为:
    Route::get('store/{id}','UserController@store');
    

    浏览器中输入http://localhost:8000/store/1?name=12,结果如下:

    获取路由参数

    通过路由闭包访问请求

    这种情况就是直接在路由里通过注入Illuminate\Http\Request,在执行闭包函数的时候服务容器会自动注入输入请求,具体实现如下,

    Route::get('re',function(Illuminate\Http\Request $request){
        $name = $request -> input('name');
        echo "$name";
    });
    

    在浏览器中输入:http://localhost:8000/re?name=12,结果如下:

    闭包路由获取请求参数

    请求路径 & 请求方法

    Illuminate\Http\Request 继承自 Symfony\Component\HttpFoundation\Request 类,提供了多个方法来检测应用的 HTTP 请求,下面我们来演示其提供的一些获取请求路径和请求方式的方法:

    获取请求路径

    path方法将会返回请求的路径信息,如果请求URL是 http://localhost:8000/user/1,则 path 方法将会返回 user/1,具体实现如下:
    路由如下:

    Route::get("user/{id}",function(Illuminate\Http\Request $request){
        $path = $request -> path();
        echo $path;
    });
    

    访问上述路由结果如下:



    is 方法允许你验证请求路径是否与给定模式匹配。该方法参数支持 * 通配符
    修改上述路由如下:

    Route::get("user/{id}",function(Illuminate\Http\Request $request){
        if($request->is('user/1')){
            echo '你的路径对了哦';
        }else{
            echo "你好像输错路径了哦";
        }
    });
    

    访问对的路径:http://localhost:8000/user/1


    访问错的路径:http://localhost:8000/user/3

    通配符*
    修改路由里的闭包方法如下:

    Route::get("user/{id}",function(Illuminate\Http\Request $request){
        if($request->is('user/*')){
            echo '你的路径对了哦';
        }else{
            echo "你好像输错路径了哦";
        }
    });
    

    路径一直都匹配;



    获取请求URL

    想要获取完整的 URL,而不仅仅是路径信息,可以使用请求实例提供的 url 或 fullUrl 方法, url 方法返回不带查询字符串的 URL,而 fullUrl 方法返回结果则包含查询字符串,具体实现如下:
    依旧把Illuminate\Http\Request依赖注入到路由里:

    Route::get('url',function(Illuminate\Http\Request $request){
        // 不包含查询字符串
        $url = $request -> url();
        echo "$url";
        // 包含查询字符串
       $url_with_query = $request->fullUrl();
       echo "</br> $url_with_query";
    });
    

    访问:http://localhost:8000/url?name=l 结果如下:

    获取请求方法

    method 方法将会返回 HTTP 请求方式。你还可以使用 isMethod 方法来验证 HTTP 请求方式是否匹配给定字符串,具体实现如下:

    Route::get("mo",function(Illuminate\Http\Request $request){
        $method = $request->method(); // GET/POST
        echo "$method</br>";
        if($request->isMethod('post')){ 
            echo "POST提交";
        }else{
            echo "其他提交";
        }
    });
    

    访问:http://localhost:8000/mo 结果如下:

    相关文章

      网友评论

          本文标题:PHP Laravel学习之HTTP请求参数获取

          本文链接:https://www.haomeiwen.com/subject/vizymftx.html