J'ai un itinéraire dans mon projet comme ci-dessous:

    Route::get('/product/{category}/{all}/{name}-{id}.html', ['as' => 'product.single', 'uses' => 'ProductController@single'])->where('id', '[0-9]+');

Voici donc le problème, comme tradition, nous mettons slug dans l'url (puis id après cela), mais de cette façon, certaines de nos routes deviendront confuses dans la section id, voici un exemple: / product / gold / women-gold / one-special-167.html à cause de ((-)) dans l'url laravel pense que special-167 est l'identifiant bien que ce ne soit pas le cas. alors existe-t-il un moyen raisonnable de contourner ce problème?

1
Alireza Amrollahi 26 nov. 2017 à 16:09

3 réponses

Meilleure réponse

Placez d'abord {id} (puis {name} ) dans votre itinéraire et dans votre méthode en même temps:

Route::get('/product/{category}/{all}/**{id}**-**{name}**.html', ['as' => 'product.single', 'uses' => 'ProductController@single'])->where('id', '[0-9]+');
1
Amin Jafari 26 nov. 2017 à 13:21

Veuillez essayer d'activer - caractère pour le nom

 Route::get('/product/{category}/{all}/{name}-{id}.html', ['as' => 'product.single', 'uses' => 'ProductController@single'])->where(['id' => '[0-9]+','name' => '[a-zA-Z-]+']);
0
jeugen 26 nov. 2017 à 13:18

Vous pouvez facilement remplacer l'id et le nom dans l'itinéraire ou les diviser /

3
mahdi morshedi 26 nov. 2017 à 13:23
47496489