【问题标题】:How to set variable in routes - laravel如何在路由中设置变量 - laravel
【发布时间】:2017-07-23 14:03:37
【问题描述】:

我的 routes.web.php 中有以下路由。看起来像这样……

Route::get('/spielerAuswahl/{somevar}', 'SpielplanController@getHeimGast');

在变量 {somevar} 中,例如 Nr1=111&Nr2=222。该路线在到达 SpielplanController 时运行良好...

public function getHeimGast(){
        $var = $somevar;
        return view('test')->with('variableControllerSomevar', $var);
    }

在此函数中,我想将 Nr1=111&Nr2=222 放入 $var 中,然后在视图中轻松输出此变量。如何获得?

【问题讨论】:

  • 公共函数 getHeimGast($somevar) 将 $somevar 设置为传递给路由的任何内容
  • Nr1=111&Nr2=222 是一个查询字符串。我怀疑您是否可以将此 var 作为路由参数。
  • 那么正确的方法是什么?
  • 要么使用参数创建路由,要么使用$request访问

标签: php variables get routes set


【解决方案1】:

虽然答案来晚了,但您可以将Nr1=111&Nr2=222 设置为具有正确编码的uri。对于 javascript,encodeURIComponent 可用于转义某些字符以形成有效的 URI:

encodeURIComponent('Nr1=111&Nr2=222');
// output: Nr1%3D111%26Nr2%3D222

请求服务器,使用这个 url:

http://example.com/spielerAuswahl/Nr1%3D111%26Nr2%3D222

然后控制器函数接收正确形式的变量,如下所示:

public function getHeimGast ($somevar) {
    $somevar // = Nr1=111&Nr2=222
}

【讨论】:

    【解决方案2】:

    Laravel 中只能将 URI 段映射为路由变量,不能映射查询字符串变量。

    你可以简单地获取这些:

    public function getHeimGast(){
        $vars = request()->all();
    
        return view('test', $vars);
    }
    

    在您的测试刀片中,您可以使用这些查询变量,例如(Nr1=111&Nr2=222):

    $Nr1$Nr2 ... 等等...

    注意:给定这样的查询:/spielerAuswahl?Nr1=111&Nr2=222

    【讨论】:

    • 但是 request()->all() 是做什么的呢? all() 来自什么?它不起作用?!
    • request()->all() 将返回一个包含所有查询字符串参数的 assoc 数组
    • 我得到未定义的变量。我需要一个吗?在我的查询中或者是 spielerAuswahl/Nr... ok
    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 2019-04-24
    • 2017-12-13
    • 2017-05-18
    • 2015-03-16
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多