2

我想将变量传递给路由('video.' . $video['video_id']);

这是我在控制器上的路线..

Route::get('/video/{id}', array('as' => 'video', 'uses' => 'VideoController@show'));

是否可以这样做

Route::get('/video/{id}', array('as' => 'video.{id}', 'uses' => 'VideoController@show'));

不知何故?

4

2 回答 2

12

命名路由背后的整个想法是,您始终可以通过其名称来引用路由,即使您更改了它使用的 URI 或控制器/方法。这意味着该名称应该是一个不变的、不变的字符串。如果你想在路由中注入一个变量,你应该使用路由参数。

如果你像这样设置你的路由声明:

Route::get('/video/{id}', array('as' => 'video', 'uses' => 'VideoController@show'));

然后你可以像这样构建你的路线:

<a href="{{URL::route('video', array($id))}}">Thing</a>
于 2013-09-20T16:10:53.697 回答
0

我同意它实际上是在滥用系统,但只是为了可以动态链接到路由,例如在循环中,已经声明了路由

$menus = ["Clients", "Invoices"];

拥有别名Clients_manageInvoices_manage ,您可以在模板中对$menus执行例如循环,如下所示:

@foreach($menus as $modelname)
<a href="{{route($modelname."_manage")}}">Manage {{$modelname}}</a>
@endforeach
于 2015-09-13T07:40:15.853 回答