在刀片模板中使用命名URL

Kho*_*Phi 7 laravel-routing laravel-5

在Django中,我可以这样做:

<a href="{% url 'account_login' %}">Account Link</a>
Run Code Online (Sandbox Code Playgroud)

这将给我domain/account/login在我的urls.py中命名的URL

url(r'^account/login/$', views.Login.as_view(), name='account_login'),
Run Code Online (Sandbox Code Playgroud)

我想在Laravel 5.2中做类似的事情

我目前有这样的事情:

Route::get('/survey/new', ['as' => 'new.survey', 'uses' => 'SurveyController@new_survey']);
Run Code Online (Sandbox Code Playgroud)

如何在模板中使用,以及传入参数?

我偶然发现了这个:https://laravel.com/docs/5.1/helpers,但它只是一个白页,没有关于如何实际使用它的相关内容.

Ben*_*rne 35

您可以使用此处route()记录的帮助程序.

<a href="{{ route('new.survey') }}">My Link</a>
Run Code Online (Sandbox Code Playgroud)

如果你包括laravelcollective/html你可以使用link_to_route().这最初是核心的一部分,但在Laravel 5中删除了.这里解释

{!! link_to_route('new.survey', 'My Link') !!}
Run Code Online (Sandbox Code Playgroud)

Laravel Collective 在这里记录了上述帮助者.功能原型如下

link_to_route($routeName, $title = null, $parameters = [], $attributes = []);
Run Code Online (Sandbox Code Playgroud)

例如,如果您想使用参数,它接受一组键值对,这些键对应于路径URI中的命名段.

例如,如果您有路线

Route::get('surveys/{id}', 'SurveyController@details')->name('detail.survey');
Run Code Online (Sandbox Code Playgroud)

您可以使用参数中的以下内容生成指向此路由的链接.

['id' => $id]
Run Code Online (Sandbox Code Playgroud)

一个完整的示例,回显包含指向路径的锚点的标记.

{!! link_to_route('new.survey', 'My Link', ['id' => $id]) !!}
Run Code Online (Sandbox Code Playgroud)