2017-01-17 1 views
1

J'essaye d'envoyer un lien à mon contrôleur. Le problème est, un lien contient des barres obliques et ne peut donc pas être envoyé en tant que param parce qu'il retournera l'erreur page introuvable. J'ai essayé d'encoder le lien à base64 mais base64 peut également contenir des barres obliques et ne vaut donc pas non plus. Quel est le meilleur moyen de passer ce problème?Passer un paramètre de lien au contrôleur dans laravel 5.3

Routing

Route::get('/report/genealogy/{page}', '[email protected]'); 

HTML | $ Nextpage, retourne: https://mywebsite.com/thisnewpage

<a href="./{{$nextpage}}">Next</a> 

Contrôleur

public function indexgenealogy($page) 
{ 
    echo $page; 
} 

Répondre

0

passe comme paramètre de chaîne de requête, et non un paramètre d'itinéraire. Ensuite, vous pouvez encoder l'URL

0

Vous pouvez utiliser rawurlencode() pour coder l'URI, puis rawurldecode() pour le décoder.

Vous pouvez passer comme paramètre de formulaire en utilisant Route::post() itinéraire:

<input type="hidden" name="url" value="some/url/with/slashes"> 

Et l'obtenir dans un contrôleur:

public function someMethod(Request $request) 
{ 
    $url = $request->url; 
0

Pourquoi ne pas utiliser simplement le url() aide fonction?

//its as simple as 
<a href="{{url('/report/genealogy/'.$nextPage)}}">next</a> 

Ceci vous donnera une URL correcte compatible avec votre itinéraire.

+0

Vous êtes absent le point . Cela va juste produire un lien qui mène à: http: // localhost/report/genealogy/https: //mywebsite.com/thisnewpage. Lequel atteindra alors une erreur sans page trouvée. En raison des barres obliques dans le lien $ nextpage. –

+0

En outre, la question n'est pas de savoir comment j'essaie d'acheminer mes utilisateurs vers différentes vues et autres. C'est demander comment passer une URL à un contrôleur. –

+0

ah je vois. utilisez-le comme une chaîne de requête dans ce cas. quelque chose comme url? page = valeur urlencoded ou comme une forme d'entrée cachée. –

0

En utilisant les routes nommées peut vous aider avec quelque chose comme ça

Routes:

Route::get('some/link/{link}' [ 
    'as' => 'pages.link', 
    'uses' => '[email protected]' 
]); 

Ensuite, à l'intérieur de la vue, vous pouvez l'appeler comme suit:

<a href="{{ route('pages.link', ['link' => $nextpage]) }}">Next page</a>