Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет!
Перейдем сразу к сути. Я начал изучать Laravel совсем недавно и столкнулся с проблемой, которую не могу пока что решить. Если у кого-то есть идеи, заранее благодарю, надеюсь эта тема поможет многим другим людям.
В общем, я разрабатываю сайт на тему ремонтного сервиса для дипломного проекта. В ходе написания логики для маршрутов сайта, я столкнулся с проблемой, которая не дает мне понять, как все таки правильно использовать структурированные маршруты.
Кратко расскажу как должна быть устроена логика. Есть Категория устройств: смартфоны, планшеты, ноутбуки. У категории есть бренды, а в брендах серии моделей, например: galaxy A,J и тд. При переходе открываются модели из выбранной серии, а при выборе модели открывается прайс-лист услуг.
В чем загвоздка?
Логика маршрута выглядела так
{name_brand}/series
проблема была именно в том, что для пути маршрута в web.php мне нужен был всего один параметр, это имя бренда, а для модели два: имя бренда, категория устройств. Загвоздка в том, что было 2 условия в запросе sql, на что laravel ругался, выдавая ошибку, что упущено 2 аргумента, но задан всего один. С одним условием я знаю как работать, а вот с несколькими в Laravel нет. Вот мой запрос
SELECT DISTINCT
device_series.id_device_series, device_series.name_series, device_series.img_series, category_device.id_category_device, category_device.name_category, brands.id_brand, brands.name_brand
from device_series
INNER JOIN model on device_series.id_device_series=model.id_device_series
INNER JOIN brands on brands.id_brand=model.id_brand
INNER JOIN category_device on category_device.id_category_device=brands.id_category_device
WHERE brands.name_brand
like $name_brand and category_device.name_category
like $name_category
Файл web.php
// Категории брендов, серии устройств и их модели
Route::group([
'prefix' => 'brands'
], function () {
// Бренды выбранной категории
Route::get('{routename}', 'BrandController@brandshow')->name('categorybrand');
// Выбор серии у бренда
Route::get('{name_brand}/series/', 'BrandController@seriesshow')->name('seriesbrand');
Контроллер, отвечающий за вывод информации из модели в представление
public function seriesshow($namebrand){
return view('series.mainseries')->with([
"result" => device_series::_sql_all($namebrand)
]);
}
Вот сама ошибка Too few arguments to function App\device_series::_sql_all(), 1 passed and exactly 2 expected.
Честно, говоря не нашел подобные темы в просторах интернета, надеюсь здесь люди помогут.
Не в сети
Ваш метод _sql_all ожидает две переменные. А вы передаете одну переменную.
Что касается роутов, то там можно передавать сколько угодно параметров. И в методе их получать через запятую.
Изменено barmaley (23.04.2020 15:28:10)
Не в сети
Да, вы правы. Я решил проблему, просто не знал, что в шаблонах можно через запятую указывать переменные для ссылок, которые передаются в параметры неограниченным количеством.
Не в сети