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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将变量传递给Laravel {{route}}帮助器相关的知识,希望对你有一定的参考价值。

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

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

那可能吗?

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

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

根据URL,$thisIsDynamic可能是adminuser

答案

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

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

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

另一答案

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

路线

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

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

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

另一答案

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

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

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

以上是关于将变量传递给Laravel {{route}}帮助器的主要内容,如果未能解决你的问题,请参考以下文章

将全局变量从当前 url 传递给 laravel 组路由

Laravel - 如何通过资源路由将变量传递给控制器​​?

Laravel - 如何通过路由组将变量传递给中间件?

如何在 laravel 5.8 中将变量传递给路由?

如何将可选 ID 从 Route 传递给 Laravel 控制器?

将 Laravel 路由传递给 vue 组件