【问题标题】:Pass variable into Laravel {{ route }} helper将变量传递给 Laravel {{ route }} 助手
【发布时间】:2018-07-23 08:15:17
【问题描述】:

我有/admin/login/user/login 的路线

我正在寻找共享相同布局文件的两个视图,因此希望将第一段(管理员或用户)传递给路由助手。

这可能吗?

如此有效,我希望做类似的事情:

{{ route($thisIsDynamic.'.login') }}

其中$thisIsDynamic 可能是adminuser,具体取决于网址。

【问题讨论】:

  • 你试过了吗?我认为这是可能的..
  • 我不明白为什么那行不通,也许只是将其更改为{{ route("$thisIsDynamic.login") }}

标签: laravel variables laravel-5 routing


【解决方案1】:

路由只能包含路由名称。如果你想传递链接,你应该使用 URL::

{{ URL::to($thisIsDynamic.'login') }}

请参考:Laravel blade templates, foreach variable inside URL::to?

【讨论】:

  • 为什么不{{ url($thisIsDynamic . 'login') }} 更干净一点?
  • @StevenGrantyeah,他们是一样的
【解决方案2】:

根据我的理解,您可以尝试使用通配符并将数据传递到 URL 中,如下所示:

路线

Route::get('/login/{type}', function($type){
  return view('login', compact('type'));
});

您现在可以访问视图上的 $type 变量。

现在,如果您想访问该路由,只需为其添加一个名称,然后在其上传递$type

【讨论】:

    【解决方案3】:

    我不建议基于动态路由名称进行重定向。但如果你真的想这样做,这就是你的做法。

    Route::get('admin/login',"SomeController@someMethod")->name('admin-login');
    Route::get('user/login',"SomeController@someMethod2")->name('user-login');
    

    而且,只要你想通过名字传递,你可以这样做{{ route("$thisIsDynamic-login") }}。但是,正如我所说,这不是正确的方法。以下是如何以正确的方式做到这一点。

    Web.php

    Route::get('{type}/login',function(){
        return view('login')->with('type',$type);
    });
    

    login.blade.php(只是你如何做的一个例子)

    @extends('layout.you.want.to.extend')
    
    @section('content')
        @if($type == 'user')
            // User login form
        @else
            // Admin login form
        @endif
    @endsection
    

    我认为这是您想要做的。如果我误解了任何内容或者您还有其他疑问,请告诉我。

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 1970-01-01
      • 2020-02-05
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2015-09-30
      • 1970-01-01
      相关资源
      最近更新 更多