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()-&gt;query('testing')) 虽然有效。【参考方案3】:

在 Laravel 8 中,你可以简单地使用 request()-&gt;route('parameter_name')

【讨论】:

【参考方案4】:

简单的方法 dd(request()-&gt;query("PARAMNAME"))

获取所有参数 dd(request()-&gt;query())

【讨论】:

以上是关于laravel 5.2 如何在刀片中获取路由参数?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 获取当前路由参数

Laravel 5.2:如何在刀片模板中设置变量,没有 php 标签?

如何在刀片 laravel 8 中获取选择输入的旧值?

如何将 vue.js 值作为参数传递给刀片中的路由

POST 路由未从根路径 Laravel 5.2 中列出

如何使用where关键字检查Laravel 5.2路由中的状态参数?