laravel 5.2 如何在刀片中获取路由参数?
Posted
技术标签:
【中文标题】laravel 5.2 如何在刀片中获取路由参数?【英文标题】:laravel 5.2 How to get route parameter in blade? 【发布时间】:2016-12-24 23:56:53 【问题描述】:这是我的网址
http://project.dev/blogs/image-with-article
所以,这里我需要参数image-with-article
在我的刀片中显示这是一个名为 slug 的参数,这是在我的路由文件中,我需要刀片中的 slug 参数。
Route::get('/blogs/slug', ['as'=>'blog.by.slug', 'uses'=> 'CmsController@show']);
【问题讨论】:
【参考方案1】:我不确定你的意思。如果您尝试在 Blade 模板中构建路由,请使用
<a href=" route('blog.by.slug', ['slug' => 'someslug']) ">...</a>
如果您尝试访问给定的参数,我建议您从控制器传递它:
// CmsController
public function show($slug)
// other stuff here
return view('someview', compact('slug'));
// someview.blade.php
$slug
如果你真的需要在不先从控制器发送参数的情况下从视图访问参数......你真的不应该,但你可以使用外观:
Request::route('slug')
【讨论】:
我想为自己寻找如何做到这一点而大声疾呼,结果却发现比我年轻两岁的自己告诉我这是一个愚蠢的想法。 嗨,为什么你的最后一个解决方案是一个不好的做法?我认为这是模板中一个很好的快捷方式,无需占用传递给它的变量数组。 @ankabot 我通常希望将任何逻辑保留在视图之外,并将它们需要的任何东西传递给它们。这不是一个严格的规则,这取决于每个人的喜好,但它通常被认为是最佳做法。 @JoelHinz 我不会调用Request::route()
逻辑 - 这对于 Laravel 来说似乎很标准。【参考方案2】:
如果你想在不使用控制器方法的情况下获取参数
dd(request()->route()->parameters)
【讨论】:
这不起作用;它返回空。dd(request()->query('testing'))
虽然有效。【参考方案3】:
在 Laravel 8 中,你可以简单地使用 request()->route('parameter_name')
。
【讨论】:
【参考方案4】:简单的方法
dd(request()->query("PARAMNAME"))
获取所有参数
dd(request()->query())
【讨论】:
以上是关于laravel 5.2 如何在刀片中获取路由参数?的主要内容,如果未能解决你的问题,请参考以下文章