Laravel по-русски

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

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

#1 02.05.2020 14:26:52

Несколько вопросов по маршрутизации: URL с одним сегментом и пр.

Собираюсь переводить используемую во многих проектах CRM на что-то современное. Возникло несколько вопросов, на которые я не могу нагуглить нормальных ответов (это не значит, что я не нагуглил костылей, но меня интересуют нормальные решения):
1) Как нормально организовать маршрутизацию так, чтобы урл состоял из одного сегмента. Т.е. http://site.com/ONE
При этом соответствие контроллер+метод для ONE хранится в БД. Таких страниц может быть много (но не очень, порядка 200 000). Понятно, что я могу направить все страницы на один контроллер, а дальше вызвать из контроллера другой контроллер. Есть ли другой, нормальный, метод?
2) Как нормально организовать маршрутизацию так, чтобы урл состоял из вложенных сегментов. Допустим, у меня есть каталог неограниченной вложенности. Хочу, чтобы урлы были: http://site.com/категория1/подкатегория … ия1.1.1/ну и т.д При этом требуется, чтобы можно было переключать через БД/файл конфигурации тип урл на сайте между 1 (первой частью вопроса) и 2. Как нормально реализовать такое?
3) Допустим, у клиента ранее был сайт с совершенно случайно структурой урл. Мне нужно скопировать этот сайт на laravel, сохранив структуру. Т.е. каждой странице ставится в соответствие какая-то строка, м.б. даже с get-параметрами. Как маршрутизировать такое?
4) Допустим, известно, что первый сегмент урл - город (может быть пустым). Например, страницы http://site.com/ONE, http://site.com/spb/ONE и  http://site.com/orel/ONE должны маршрутизироваться одинаково. Список городов хранится в БД, он небольшой (100-200 позиций). Как маршрутизировать такое?

Далее пара вопросов не по маршрутизации:
1) Допустим, у меня есть каталог товаров, которые хранятся в отдельной таблице. Есть связанная таблица - поставщики. Я описываю связи в моделях и т.д. Все получается, все работает. Но пусть клиенту нужны только товары. А я не хочу выгружать ему на сервер логику, связанную с поставщиками (то есть модели поставщиков, представления и т.п.). При этом я не хочу иметь две разные модели для каталога товаров. Могу ли я описывать связи между моделями условно (ориентируясь на существование второй модели)?
2) Я хочу сделать визуальную инсталляцию модулей (не хочу добавлять что-то через comoser, хочу через CMS). Какая лучшая практика для этого в laravel?

Буду благодарен даже ключевым словам по каждому из запросов. Например, database driven routing очень ограниченно описывает первую задачу.

Не в сети

#2 02.06.2020 10:42:20

Re: Несколько вопросов по маршрутизации: URL с одним сегментом и пр.

Добрый день, если я правильно понял
У роутов есть возможность вложить переменную в запрос
blog/{id}, и передать id в BlogController@index, в экшне public function index($id){}
Либо там же вызвать функцию замыкания и передать туда $id.
В целом, я так понимаю, ваш вопрос можно оптимизировать до
Можно ли переменную {id} подставить в вызванный контролллер, например idController@index, верно? Попробуйте так поискать

Вообще, если явно не указать get запрос в роуте, а он есть, то он будет автоматически добавляться в урл.
В любом случае, можно добавить в роут ?page={id} и передать также id в контроллер.


Первый вопрос про маршрутизацию не совсем понятен, вернее его сложность) Обычная практика создавать модели, в ларавел есть инструмент, чтобы легко обойтись от сложных запросов, и вы можете все эти связи реализовать в модели.  Зачем вам выгружать логику? Не совсем понятно:)

Не в сети

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