如何在刀片 Laravel 中使用带参数的 url

Posted

技术标签:

【中文标题】如何在刀片 Laravel 中使用带参数的 url【英文标题】:How to use url with parameter in blade Laravel 【发布时间】:2017-11-08 00:56:27 【问题描述】:

我尝试在我的master.blade.php 中为不同的页面使用不同的样式表。当我使用简单的路线时,它可以工作。

@if ( Request::path() == 'videos/alpes')
   <link rel="stylesheet" href=" URL::asset('/css/style-vid.css') " type="text/css" media="all">
@elseif (Request::path() == 'texts')
   <link rel="stylesheet" href=" URL::asset('/css/style-lir.css') " type="text/css" media="all">
@else
   <link rel="stylesheet" href=" URL::asset('/css/style-all-together.css') " type="text/css" media="all"> 

但我找不到在@if 语句中使用带参数的路由的方法,即

Route::get('/videos/video', 'VideoController@show'); 

我尝试为所有视频都这样做,而不仅仅是其中一个视频(alpes)。有没有简单的方法来做到这一点?

【问题讨论】:

欢迎来到 Stack Overflow。请查看Tour 和Asking。 【参考方案1】:

尝试使用action helper:

动作函数为给定的控制器动作生成一个 URL。您不需要将完整的命名空间传递给控制器​​。相反,传递相对于App\Http\Controllers 命名空间的控制器类名:

$url = action('HomeController@getIndex');

如果方法接受路由参数,您可以将它们作为第二个参数传递给方法:

$url = action('UserController@profile', ['id' =&gt; 1]);

在您的变体中:

@if(Request::url() == action('VideoController@show', ['video' => $video]))
    //some code
@endif

您可以将代码Request::path() == 'videos/alpes' 更改为Request::is('video/alpes')

【讨论】:

以上是关于如何在刀片 Laravel 中使用带参数的 url的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 4 中的 @if 语句(刀片)中获取当前 URL?

在 Laravel 中如何在查询中不带参数的 groupBy Url

在 Laravel 的所有页面中包含一个带控制器的刀片

如何在 Laravel 5 中访问刀片中的 URL 段?

laravel 5.2 如何在刀片中获取路由参数?

Laravel 5使用刀片模板在视图中调用函数时如何使用参数