2 votes

Correction des slugs d'URL optionnels de Laravel

J'aimerais corriger un slug potentiellement incorrect dans l'url d'un article, comme le fait Stack Overflow, comme on le voit ici : https://stackoverflow.com/questions/51413983/completely-incorrect-slug

Prenons l'exemple de l'url suivante :
www.example.com/posts/5/some-slug-here

Mon itinéraire est le suivant et il fonctionne :
Route::get('/posts/{id}/{slug?}', [...]

Mais l'url suivante fonctionne également :
www.example.com/posts/5/some-wrong-slug-here

J'ai accès au slug lorsque l'url est atteinte en récupérant le post par id.
Je voudrais mettre à jour l'url pour qu'elle soit correcte. Est-ce possible sans utiliser Javascript ?

2voto

braed Points 165

Merci. rkj .
J'ai obtenu ce que je voulais en faisant du slug un paramètre facultatif, en récupérant l'article et en vérifiant si le slug de l'url correspond au slug de l'article. Si c'est le cas, je renvoie une vue. Si ce n'est pas le cas, je redirige vers la même route, en passant l'id et le slug correct comme paramètres.

Exemple de route :

Route::get('/posts/{id}/{slug?}', 'FrontEndController@single_post')->name('single_post');

Exemple de contrôleur :

public function single_post($id, $slug = null)
{
    $post = Post::find($id);

    if ($slug != $post->slug)
    {
        return redirect()
            ->route('single_post', ['id' => $post->id, 'slug' => $post->slug]);
    }

    return view('single_post');
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X