Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет!
При использовании более одного параметра маршрута выбрасывает исключение 404.
Не могу понять в чем дело.
Запрашиваемый URI: http://www.site.loc/product-category/in-stock/page/2
Если запросить http://www.site.loc/product-category/in-stock/ всё работает, а если добавить page/2 , выбрасывает исключение 404.
роут:
Route::get('/product-category/{name}/{name1?}/{page?}',['uses'=>'ProductCategoryController@index']);
часть контроллера:
public function index( $name, $name1 = null, $page = null )
{
$category = DB::table('categories')->where('alias', $name)->first();
dd($category);
if ( empty( $category ) ) {
abort( 404 );
}
Если запрашивать с одним параметром, то распечатывает содержимое $category, а в противном случае - исключение 404. Пробовал делать все параметры обязательными и наоборот - всё равно при одном работает, а если больше одного нет. Почему так?
Не в сети
The immediate `$name1` parameter could be greedily matching "page," leaving "2" unmatched, or the framework might be expecting "page" to be a value for `$name1` rather than a distinct segment indicating pagination.
To resolve this, you could try explicitly defining a separate route for pagination:
```php
Route::get('/product-category/{name}/{name1?}', ['uses' => 'ProductCategoryController@index']);
Route::get('/product-category/{name}/{name1}/page/{page}', ['uses' => 'ProductCategoryController@index']);
```
This ensures that the route with `/page/{page}` is specifically matched when pagination is involved, preventing the framework from misinterpreting "page" as a value for your optional `$name1` parameter.
Не в сети
Страницы 1