2017-07-26 1 views
1

J'utilise Laravel 5.4. Je veux utiliser la chaîne de requête comme ci-dessous:Comment passer une chaîne de requête avec des routes dans laravel 5.4

tempsite.com/lessons?id=23 

Pour obtenir cela comment les routes doivent être modifiées. Il est possible de donner l'itinéraire de la manière suivante.

Route::get('lessons/id={id}', ['as' => 'lessons.index', 'uses' => 'Lessons\[email protected]']); 

Mais en ajoutant '?' ne se fait pas pour moi. Aidez-nous à fournir une solution le plus tôt possible.

Répondre

0

Si vous utilisez des contrôleurs de ressources, vos itinéraires sont tous MANIPULÉE vous donc vous tout simplement

Route::resource('lessons', 'Lessons\LessonController'); 

Vous pouvez alors utiliser le modèle de l'itinéraire de liaison pour lier l'instance de modèle qui correspond à cet identifiant particulier.

Route::model('lesson', Lesson::class); 

Cela se ferait dans votre RouteServiceProvider.

Je suggère également d'avoir une bonne lecture de la documentation suivante sur le site Web laravel https://laravel.com/docs/5.4/routing. Il donne un bon aperçu de la façon dont les routes fonctionnent et comment elles doivent être structurées.

0

Au lieu de tempsite.com/lessons?id=23 Faites passer comme ça tempsite.com/lessons/23 et la route

Route::get('lessons/{id}', ['as' => 'lessons.index', 'uses' => 'Lessons\[email protected]']); 

pour obtenir l'ID dans votre contrôleur, écrivez votre fonction comme ceci

public function index($id) 
{ 
    //do anything with $id from here 
} 
+0

Cela ne répond pas à la question. Bien que dans ce cas précis, il serait préférable de le passer comme une URL significative, il y a un temps où les querystrings sont encore meilleurs. –

0

Il n'est pas nécessaire de définir des paramètres de chaîne de requête dans vos routes. Vous pouvez retourner les paramètres de chaîne de requête dans votre contrôleur comme ceci:

exemple URL: tempsite.com/lessons?id=23

public function lessons(Request $request) 
{ 
    $request->get('id'); // Using injection 
    Request::get('id'); // Using the request facade 
    request()->get('id'); // Using the helper function 
} 

Vous pouvez même valider le paramètre:

public function lessons(Request $request) 
{ 
    $this->validate($request, ['id' => 'required|integer']); 
} 

Remarque : Si vous souhaitez que l'URL ne soit pas accessible si l'ID est omis, consultez la réponse @DarkseidNG.