【问题标题】:Laravel - passing route parameter to bladeLaravel - 将路由参数传递给刀片
【发布时间】:2018-03-05 12:35:06
【问题描述】:

我使用的是 Laravel 5.6,带有默认的 make:auth 机制。

在 routes/web.php 中,我想添加一个语言中间件如下:-

Route::prefix('{lang}')->group(function () {
    Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
});

现在我想在刀片中应用它:-

<a href="{{ route('password.request') }}">

但调试器只是说:-

Missing required parameters for [Route: password.request] [URI: {lang}/password/reset].

我相信刀片无法从路由中获取 {lang}。如何实现?

【问题讨论】:

    标签: laravel-5


    【解决方案1】:

    试试这个

    <a href="{{ url('en') }}/password/reset">
    

    【讨论】:

      【解决方案2】:

      当你在路由中传递一个前缀时,这意味着它将被包含在路由中,所以当你说

      Route::prefix('{lang}')->group(function () {
      Route::get('password/reset' .......
      Route::get('foo/bar' .......
      

      这意味着路由将是这样的“http://yourwebsite.com/{lang}/password/reset” "http://yourwebsite.com/{lang}/foo/bar"

      因此,每次您通过属于该组的任何路由时,都需要有一个名为 $lang 的变量,以便可以初始化链接。

      在你的情况下

      <a href="{{ route('password.request', ['lang' => 'en']) }}"> //you can change en to your preferred language. 
      

      如果你想add a middleware到特定的路由或路由组,就是这样传递的

      Route::get('/', function () {
      //
      })->middleware('first', 'second');
      

      Route::group(['middleware' => ['first']], function () {
      //
      });
      

      如果您想创建另一种语言,可以查看以下链接:

      Laravel localization

      spatie/laravel-translation-loader

      【讨论】:

      • 此方法有效。另外,在 {{ route('password.request', ['lang' => 'en']) }} 的情况下,如果我想使用 {{ route('password.request') }},并修改自动包含 ['lang' => 'en'] 的 route() 函数,有可能吗???
      • 如果您想进一步解释一下,无论您是想将所有语言更改为 en 还是打算使用其他语言,我可能会提供更好的帮助
      猜你喜欢
      • 2019-08-12
      • 1970-01-01
      • 2019-03-03
      • 2018-08-14
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      相关资源
      最近更新 更多