将变量传递给Laravel {{route}}帮助器

时间:2018-02-13 02:47:41

标签: laravel variables laravel-5 routing

我有/admin/login/user/login

的路线

我正在寻找两个视图来共享相同的布局文件,因此希望将第一个段(admin或user)传递给路径助手。

这可能吗?

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

<强>路由

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

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

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

答案 2 :(得分:0)

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

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

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