2017-06-19 3 views
0

J'essaie de générer un lien URL en utilisant une route nommée. Par exemple, j'ai http://myapp.com/{token}. Mais, j'avais utilisé beaucoup de fonction avec la route mais le résultat que j'ai est http://myapp.com?token au lieu de http://myapp.com/token.Comment puis-je créer une URL avec un itinéraire nommé?

Que puis-je faire?

La seule façon de générer l'URL correcte est d'utiliser la fonction url sans le nom d'URL. Par exemple: url('/reset', [$token]). Mais dans ce cas, je n'utilise pas le nom de la route où c'est ce que je voudrais utiliser.

problème réel: J'ai une route comme ceci:

// Password reset routes... 
Route::get('reset/{token}', [ 
    'as' => 'password.reset', 
    'uses' => 'Auth\[email protected]' 
]); 

Un modèle de lame:

<a href="{{ url('/reset', [$token]) }}">Click here to reset your password</a> 
<br> 
<a href="{{ url(route('password.reset', $token)) }}">Click here to reset your password</a> 
<br> 
{!! link_to_route('password.reset', 'Click here to reset your password', $token) !!} 
<br> 
<a href="{{ route('password.reset', $token) }}">Click here to reset your password</a> 

Le résultat est:

<a href="https://laravel51.app2/reset/72a560d23a1bf17eec336d07c169bd4c02d25e24ae3581977b4fa4aa4f4e3252">Click here to reset your password</a> 
<br> 
<a href="https://laravel51.app2/reset?72a560d23a1bf17eec336d07c169bd4c02d25e24ae3581977b4fa4aa4f4e3252">Click here to reset your password</a> 
<br> 
<a href="https://laravel51.app2/reset?72a560d23a1bf17eec336d07c169bd4c02d25e24ae3581977b4fa4aa4f4e3252">Click here to reset your password</a> 
<br> 
<a href="https://laravel51.app2/reset?72a560d23a1bf17eec336d07c169bd4c02d25e24ae3581977b4fa4aa4f4e3252">Click here to reset your password</a> 
+1

Par les docs, le second paramètre 'route()' devrait être un tableau. 'route ('password.reset', ['token' => $ jeton])' – ceejayoz

+0

J'ai pu remarquer que j'ai deux routes différentes avec le même alias. C'était mon problème. Après avoir renommé les routes, la fonction fonctionne bien. itinéraire ('password.reset', [ 'jeton' => $ jeton]) // itinéraires de réinitialisation de mot de passe ... Route :: get ('reset/{jeton}', [ 'comme' = > 'password.reset', 'uses' => 'Auth \ PasswordController @ getReset' ]); Route :: post ('reset', [ 'as' => 'password.reset_post', 'uses' => 'Auth \ PasswordController @ postReset' ]); – juanmiguel431

Répondre

0
route('password.reset', [ 'token' => $token ]) 

est ce que vous besoin d'écrire

+0

J'ai essayé mais ça ne marche pas car il suffit d'ajouter le jeton comme variable d'url. https: //laravel51.app2/reset? Token = bf8880513474a02 ...... – juanmiguel431

+0

donc vous avez utilisé différents alias maintenant pour vos itinéraires? ça a marché? –

+0

Oui, j'avais juste besoin de faire ça. Le problème était que j'avais deux routes différentes avec le même nom. – juanmiguel431