web-dev-qa-db-fra.com

Utilisation d'une URL nommée dans le modèle de lame

Dans Django, je peux le faire:

<a href="{% url 'account_login' %}">Account Link</a>

ce qui me donnerait domain/account/login où j'ai cette URL nommée dans mon urls.py

url(r'^account/login/$', views.Login.as_view(), name='account_login'),

Je veux faire quelque chose de similaire dans Laravel 5.2

J'ai actuellement quelque chose comme ça:

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

Comment utiliser dans mon modèle, en plus de passer des paramètres?

Je suis tombé sur ceci: https://laravel.com/docs/5.1/helpers , mais ce n'était qu'un morceau de page blanche sans contenu pertinent sur la façon de l'utiliser réellement.

7
KhoPhi

Vous pouvez utiliser l'assistant route(), documenté ici .

<a href="{{ route('new.survey') }}">My Link</a>

Si vous incluez laravelcollective/html, Vous pouvez utiliser link_to_route(). Cela faisait à l'origine partie du noyau mais a été supprimé dans Laravel 5. Il est expliqué ici

{!! link_to_route('new.survey', 'My Link') !!}

Le collectif Laravel a documenté l'aide précitée ici . Le prototype de la fonction est le suivant

link_to_route($routeName, $title = null, $parameters = [], $attributes = []);

Si, par exemple, vous souhaitez utiliser des paramètres, il accepte un tableau de paires de valeurs clés qui correspondent aux segments nommés dans votre URI d'itinéraire.

Par exemple, si vous aviez un itinéraire

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

Vous pouvez générer un lien vers cet itinéraire en utilisant ce qui suit dans les paramètres.

['id' => $id]

Un exemple complet, faisant écho au balisage contenant une ancre à l'itinéraire nommé.

{!! link_to_route('new.survey', 'My Link', ['id' => $id]) !!}
34
Ben Swinburne