Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 21.10.2020 18:41:27

undefined offset line 1290, динамические роуты

Добрый день проблема следующая:
Пытаюсь циклировать роуты и выбивает ошибку
vendor/laravel/framework/src/Illuminate/Support/Collection.php:1290

Получаю из базы данные:

$categories = Category::all()->toArray();
$brands = Brand::all()->toArray();

Если без цикла ссылать на роут то все гуд, причем верхний роут работает с категориями что самое интересное а вот следующий цикл для брендов нет.


Цикл категорий он работает

foreach ($categories as $category) {
    $cat_url = $category['url'];
    Route::get('male/{cat_url}', ['uses' => 'CatalogController@index']);
    $products = Product::where('eshopcatid', $category['id'])->get();
    foreach ($products as $product) {
        $product_url = $product['linkname'];
        Route::get('products/{cat_url}/{product_url}', ['uses' => 'ProductController@index']);
    }
}

Цикл брендов:

foreach ($brands as $brand) {
    $brand_url = $brand['url'];
    Route::get('male/{brand_url}', ['uses' => 'CatalogBrandController@index']);
}

Код одинаковый но верхний с категориями работает в чем может быть проблема? Заранее благодарю!

Изменено bogdan_titomir (21.10.2020 18:43:18)

Не в сети

#2 21.10.2020 20:08:03

Re: undefined offset line 1290, динамические роуты

Получилось в цикле провести только с таким роутом почему то male/brands/adidas male/adidas бьет ошибку получается он в цикле этим роутом и не прописывает индивидуально под каждый адрес можно получается любые значения проставить и будет выводиться шаблон(((

Не в сети

#3 22.10.2020 05:41:06

Re: undefined offset line 1290, динамические роуты

foreach ($brands as $brand) {
    $brand_url = $brand['url'];
    Route::get('male/{brand_url}', ['uses' => 'CatalogBrandController@index']);
}

Бессмыслица. Ты не используешь переменную цикла в описании маршрута! Да и незачем, реально. Маршрут для маски 'male/{brand_url}' нужен всего один. В экшен CatalogBrandController::index ты можешь получить $brand_url как параметр! И уже там в контроллере можешь искать это значение.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 22.10.2020 16:40:52

Re: undefined offset line 1290, динамические роуты

Использую, Route::get('male/{brand_url}'  вот же))
До него это работает с get('male/{category_url}'
но вот когда повторяешь вложенность он ругается на undefined offset 0 в форыче
а вот так уже работает male/brands/{brand_url}

Прошу показать ошибку, заранее благодарю!

Не в сети

#5 22.10.2020 23:39:21

Re: undefined offset line 1290, динамические роуты

Использую, Route::get('male/{brand_url}'  вот же))

тебе кажется, что здесь подставляется переменная? smile нет. это просто описание маршрута с параметром. в таком виде его достаточно объявить один раз без цикла.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#6 23.10.2020 14:38:43

Re: undefined offset line 1290, динамические роуты

Точно! Благодарю! Буду тогда сверять значение уже в самом контроллере, всех благ!

Не в сети

#7 23.10.2020 15:19:42

Re: undefined offset line 1290, динамические роуты

Вопрос такой например указываю такой адрес male2/obov2/ он ее все равно выводит но уже без товаров как мне редиректнуть на 404 страницу? Для это надо код в Middleware писать? Создавать под него отдельную группу и там уже фильтровать?

Не в сети

Подвал раздела