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

PHP Laravel 学习之请求参数获取(二)

作者: 唐朝早晨 | 来源:发表于2018-08-12 17:11 被阅读0次

    写在前面:
    这篇接上篇PHP Laravel 学习之请求参数获取:PHP Laravel 学习之请求参数获取


    获取请求输入

    方法:

    //all 方法以数组格式获取所有输入值
    $input = $request->all();
    //获取单个输入值
    $value = $request->input('任意请求中的name值');
    /*input还可以接收第二参数为默认值,例如:input('name','学院君')处理表单数组是可以使用 "." 来访问数组输入*/
    //查询所有查询字符串的值
    $query = $request->query();
    //从查询字符串中获取输入
    $name = $request->query('name');
    //query也可以接收第二个参数作为默认值,例如:$name = $request->query('name', '学院君');
    //通过属性获取输入值,
    $name = $request->name;
    //获取JSON输入值
    $name = $request->input('user.name');
    //获取输入的部分数据,only和except
    $input = $request->only(['username', 'password']);
    $input = $request->only('username', 'password');
    
    $input = $request->except(['credit_card']);
    $input = $request->except('credit_card');
    //has方法判断请求是否存在,返回一个Boolean值
    has('name')    
    has(['name', 'email'])
    //判断参数存在且参数值不为空,可以使用 filled 方法
    filled('name')
    //将输入存储到Session
    $request->flash();
    //flashOnly 和 flashExcept
    $request->flashOnly('username', 'email');
    $request->flashExcept('password');
    //将输入存储到 Session 然后重定向
    return redirect('form')->withInput();
    return redirect('form')->withInput($request->except('password'));
    //取出上次请求数据
    $username = $request->old('username');
    

    具体实现

    表单路由:

    Route::get('form',function(){
        return view("form");
    });
    

    form表单:

     <form action = "{{route('posts.store')}}"  method ="post">
            {{ csrf_field() }}
            <table>
                <tr>
                    <td>name</td>
                    <td><input type = "text" name = "name" /></td>
                </tr>
                <tr>
                    <td>email</td>
                    <td><input type = "text" name = "email" /></td>
                </tr>
                <tr>
                    <td>password</td>
                    <td><input type = "password" name = "password" /></td>
                </tr>
                <tr>
                    <td colspan=2 align='center'><input type = "submit" value = "submin"/></td>
                </tr>
            </table>
      </form>
    

    提交到PostController@store中:

    //store 方法
    public function store(Request $request)
        {
          //获取所有输入值
            $input = $request->all();
            dd($input);
        }
    

    浏览器访问表单:http://localhost:8000/form

    form表单

    点击submit提交


    all方法
    以下如没有特殊说明,则所有方法测试都在store方法里进行演示

    input('任意请求中的name值');
    input('name','学院君')
    修改表单里:<input type = "text" name = "name1" />

    public function store(Request $request)
        {
            //有参获取name
            $name = $request->input('name','学院君');
            //无参获取email
            $email = $request->input('email');  
            echo "name = ".$name.'</br>' ;
            echo "email=".$email.'</br>';
            echo "password =".$password.'</br>';
        }
    

    浏览器访问表单:http://localhost:8000/form

    form表单
    点击submit提交
    结果
    由此可以发现,带默认值的input方法是当请求提交中没有该属性时则会使用默认值。
    把上述表单改回 name
    input获取数组。该演示在index方法中进行
    public function index(Request $request)
        {
            //获取请求数组里第0个元素name
            $input = $request->input('products.0.name');
            //获取整个请求数组
            $names = $request->input('products.*.name');
            echo $input."</br>";
            dd($names);
            
        }
    

    浏览器中访问:http://localhost:8000/posts?products[][name]=%E5%AD%A6%E9%99%A2%E5%90%9B&products[][name]=%E5%AD%A6%E9%99%A2%E5%90%9B%E5%B0%8F%E5%8F%B7
    结果如下:

    请求数组
    $query = $request->query();
    $name = $request->query('name');
    $name = $request->query('name','学院君');
    

    依旧在index方法中,修改表单提交方式为:get

    public function index(Request $request)
        {
            //带参数获取请求查询
            $name = $request->query('name1','学院君');
            //获取查询字符串里的password的值
            $password = $request->query('password');
            //获取所有查询字符串
            $all = $request->query();
            echo "$name</br>";
            echo "$password</br>";
            dd($all);
        }
    

    浏览器访问表单:http://localhost:8000/form

    from

    点击提交



    我们表单请求为post在试一遍


    无结果
    则可以发现query只可以获取get请求发送的属性,对比input,input无论请求是get还是其他都可以获取
    从查询字符串中获取输入
    $name = $request->query('name');
    

    store方法,改回form表单
    通过属性获取输入值:

    $name = $request -> name;
    
    public function store(Request $request)
        {
           //通过name属性
            $name = $request -> name;
            //通过email属性
            $email = $request -> email;
            echo "name = ".$name.'</br>' ;
            echo "email=".$email.'</br>';   
        }
    

    提交


    属性

    获取JSON输入值

    $name = $request->input('user.name');
    

    修改表单name为:<input type = "text" name = "user[name]" />

    public function store(Request $request)
        {
           $name = $request->input('user.name');
            echo "name = ".$name.'</br>' ;
        }
    

    浏览器访问form表单:http://localhost:8000/form


    提交

    获取输入的部分数据,only和except
    public function store(Request $request)
        {
           //只获取username,password
           $input = $request->only(['name', 'password']);
           //获取除了username,password其他的,不包括username,password
           $input1 = $request->except(['name', 'password']);
           dd($input);
           dd($input1); 
        }
    

    注意要查看input就必须注释掉dd(input1);Laravel不支持同时打印两个dd
    首先是input访问:http://localhost:8000/form


    提交
    only
    然后input1访问:http://localhost:8000/form

    提交
    except
    请求是否存在has
    public function store(Request $request) {
          if($request -> has('name')){
            echo '有';
          }else{
              echo "没有";
          }
     }
    

    浏览器访问表单:http://localhost:8000/form](http://localhost:8000/form)
    提交

    has
    //若has接收的数组同时又则返回true否则返回false
    public function store(Request $request) {
          if($request -> has(['name','llll'])){
            echo '有';
          }else{
              echo "没有";
          }
     }
    

    浏览器访问表单:http://localhost:8000/form

    has数组
    判断参数存在且参数值不为空,可以使用 filled 方法
    public function store(Request $request) {
          if($request -> filled('name')){
            echo '有';
          }else{
              echo "没有";
          }
     }
    

    浏览器访问表单:http://localhost:8000/form
    不填值提交


    填值提交


    将输入存储到Session中$request->flash();
    public function store(Request $request) {
          //数据存入session
          $request->flash();
          //从session取数据
          $va = $request->session()->all();
          dd($va);
     }
    

    浏览器访问表单:http://localhost:8000/form


    提交

    flashOnly 和 flashExcept
    public function store(Request $request) {
    //只存'name', 'email到session
          $request->flashOnly('name', 'email');
          //除了'name', 'email'以外的存入session中,不包括'name', 'email'
          $request->flashExcept('name', 'email');
          $va = $request->session()->all();
          dd($va);
     }
    

    注意在执行flashExcept时请注释掉之前的flashOnly,反之亦然。因为session同一时间只能写进去一个。
    浏览器访问表单:http://localhost:8000/form
    flashOnly,


    提交

    flashExcept


    将输入存储到 Session 然后重定向:return redirect('form')->withInput();
    修改一下form表单:
    <input type = "text" name = "name" value="{{old('name')}}"/>
    <input type = "text" name = "email" value="{{old('email')}}"/>
    public function store(Request $request) {
    //带着session重定向到form表单
     // return redirect('form')->withInput();
    ///带着session除了name,重定向到form
    return redirect('form')->withInput($request->except('name'));
     }
    浏览器访问表单:http://localhost:8000/form
    ![](https://img.haomeiwen.com/i12958167/267f758a3f76267c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    提交
    ![](https://img.haomeiwen.com/i12958167/927e576e290a2f95.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    依旧是之前的表达
    ![](https://img.haomeiwen.com/i12958167/267f758a3f76267c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    提交
    ![](https://img.haomeiwen.com/i12958167/c14f830b111cf2b2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    取出上次请求数据
    

    username =request->old('username');

    上述表单已经展示;
    

    相关文章

      网友评论

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

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