Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день проблема следующая:
Пытаюсь циклировать роуты и выбивает ошибку
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)
Не в сети
Получилось в цикле провести только с таким роутом почему то male/brands/adidas male/adidas бьет ошибку получается он в цикле этим роутом и не прописывает индивидуально под каждый адрес можно получается любые значения проставить и будет выводиться шаблон(((
Не в сети
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.
Не в сети
Использую, Route::get('male/{brand_url}' вот же))
До него это работает с get('male/{category_url}'
но вот когда повторяешь вложенность он ругается на undefined offset 0 в форыче
а вот так уже работает male/brands/{brand_url}
Прошу показать ошибку, заранее благодарю!
Не в сети
Использую, Route::get('male/{brand_url}' вот же))
тебе кажется, что здесь подставляется переменная? нет. это просто описание маршрута с параметром. в таком виде его достаточно объявить один раз без цикла.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Точно! Благодарю! Буду тогда сверять значение уже в самом контроллере, всех благ!
Не в сети
Вопрос такой например указываю такой адрес male2/obov2/ он ее все равно выводит но уже без товаров как мне редиректнуть на 404 страницу? Для это надо код в Middleware писать? Создавать под него отдельную группу и там уже фильтровать?
Не в сети