2017-11-26 5 views
1

ich eine Route in meinem Projekt haben wie unten:Laravel Route wurde verwirren über id und Slug

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

so hier id das Problem, als Tradition, die wir in url setzen Wegschnecke (und dann id Danach), Aber auf diese Weise werden einige unserer Routen im ID-Abschnitt verwirren, hier ist ein Beispiel: /product/gold/women-gold/one-special-167.html wegen ((- -)) in der URL Laravel Think Special -167 ist die ID, obwohl es nicht ist. Also gibt es einen vernünftigen Weg, um dieses Problem zu umgehen?

+0

Warum verwenden Sie keine Route wie /{name}/{id}.html –

+0

wie special/167 dann können Sie Ihre ID sehr leicht wählen –

+0

@AmitGupta, weil die URL-Muster nicht so sein soll (in meinem Fall natürlich) –

Antwort

1

die setzen {id} erste (und dann {name}) in der Route und in Ihrer Methode zur gleichen Zeit:

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

Bitte versuchen Sie es ermöglichen - Zeichen für Namen

Route::get('/product/{category}/{all}/{name}-{id}.html', ['as' => 'product.single', 'uses' => '[email protected]'])->where(['id' => '[0-9]+','name' => '[a-zA-Z-]+']); 
2

Sie können ganz einfach ID und Name in der Route ersetzen oder sie devide/