zoukankan      html  css  js  c++  java
  • Laravel同时接收路由参数和查询字符串中的参数以及laravel 提交数据的时候总是带有一个参数 s 是什么原因

    表单里没有这个参数,为什么总是带着这个 s

    laravel 的 url 重写的 nginx 配置,使用这种方式

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

    不要使用类似 tp 的这种

    location / {
       if (!-e $request_filename) {
       rewrite  ^(.*)$  /index.php?s=/$1  last;
       break;
        }
     }
    

    Laravel捕捉路由参数

    Laravel允许在controller方法中捕捉路由里定义的参数,如下所示:

    路由中定义参数:

    Route::get('post/{id}', 'PostController@content');
    

    控制器方法里捕捉路由参数:

    class PostController extends Controller
    {
    
        public function content($id)
        {
            //
        }
    
    }
    

    Laravel同时捕获路由参数和查询字符串参数

    那在控制器里怎么既能捕捉到路由里定义的参数又能接收到url查询字符串里的参数呢,比如请求链接是这样的http://example.com.cn/post/1?from=index

    引用官网文档的解释

    Dependency Injection & Route Parameters
    
    If your controller method is also expecting input from a route parameter you should list your route parameters after your other dependencies.
    

    就是说如果想要在控制器方法注入依赖时仍然能使用路由里的参数,你需要把路由里的参数列举在方法依赖的后面,比如:

    <?php
    namespace AppHttpControllers;
    use IlluminateHttpRequest;
    class PostController extends Controller
    {
    
        public function content(Request $request, $id)
        {
            $from = $request->get('from')
        }
    
    }
    

    Laravel捕获多个可选参数

    此外laravel路由中我们还可以定义多个可选参数:

    Route::get('/article/{id}/{source?}/{medium?}/{campaign?}', 'ArticleController@detail')
    

    在控制器方法中可选参数需要定义成默认参数:

    public function detail(Request $request, $id, $source = '', $mediun = '', $campaign = '')
    {
        //
    }
    

    这样定义完后路由里URL里可以传递0~3个可选参数,但是必须按照顺序:即想传第二个可选参数那么第一个可选参数必须有。
    URL示例:
    http://example.com.cn/article/1/wx/h5?param1=val1&param2=val2
    在这个例子中"wx"会传递给变量$source, "h5"会传递给变量$medium

  • 相关阅读:
    mysql备份还原
    java-mysql(3) 读写image
    java-mysql(2) Prepared statement
    java-mysql(1)
    jmeter报告分析工具
    浏览器下载img标签Base64图片
    Java定时器TimeTask
    js倒计时
    h5语音播放(移动端)
    Linux环境下在Tomcat上部署JavaWeb工程
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/14199465.html
Copyright © 2011-2022 走看看