Laravel переменных маршрута с несколькими "-" - PullRequest
0 голосов
/ 19 апреля 2020

Итак, в моем приложении laravel есть маршрут категории, который выглядит следующим образом:

Route::get('all-{category}-listings', 'CategoryController@index')->name('category');

Когда я go перехожу на следующий URL localhost: 8000 / all-test-lists, it работает нормально, но когда у категории также есть дефис в названии, это дает мне 404, например localhost: 8000 / all-test-test-lists

Кто-нибудь знает способ решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Вы можете использовать «Ограничения регулярных выражений» на маршруте, чтобы включить категории с параметром da sh:

Route::get('all-{category}-listings', 'CategoryController@index')
->where('category', '[A-Za-z0-9-]+')
->name('category');

https://laravel.com/docs/7.x/routing#parameters -regular-expression-constraints

0 голосов
/ 19 апреля 2020

Если вы хотите, чтобы параметр маршрута всегда был ограничен данным регулярным выражением, вы можете использовать метод pattern. Вы должны определить эти шаблоны в методе загрузки вашего RouteServiceProvider:

/**
 * Define your route model bindings, pattern filters, etc.
 *
 * @return void
 */
public function boot()
{
    Route::pattern('category', '[a-z0-9-]+');

    parent::boot();
}

После определения шаблона он автоматически применяется ко всем маршрутам с использованием этого имени параметра:

Route::get('all-{category}-listings', function ($category) {
    // {category} has to be alpha numeric (lowercase), but can include a dash
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...