@turindd

Как сделать поддомены для городов на laravel (почти получилось)?

Всем привет уважаемые программисты!
Вопрос моего дня)
Уже реализовал на Laravel поддомены для городов, но столкнулся с проблемой!

Хочу чтобы:
Москва была без поддомена website.ru
Новосибирск с поддоменом nsk.website.ru
Бердск с поддоменом berdsk.website.ru

Сделал так:
БД
60e7d0455ecda079535043.jpeg
Роуты
Route::group([
     'domain' => '{city_alias}.website.ru',
     'namespace' => 'Available',
 ], function (){
     Route::get('/', 'IndexController@index')->name('index');
 });

Ссылки в блэйдах
route('category.one', [$city_one->alias, $category_one->alias])

Контроллер
class IndexController extends Controller 
{
    public function index($city_alias)
    {
        $city_one = City::cityAlias($city_alias)->first();
        return view('........');
    }
}


Проблема состоит с городом МОСКВА! москва = null. Как сделать так, чтобы москва была без поддомена?? + меньше когда написать.
Возможно дадите 2 совета:
- как сделать по простому (много кода через if)
- как сделать по сложному (наследование и конструкторы)

Заранее всем благодарен!!! Какой бы ответ не был!!!

Проблема с 'точкой', попробовал даже в БД добавить в alias 'точку' => nsk.
а в роутах убрать точку)) но увы)) Может ее по другому можно убрать.

Возможно что-то нужно поменять тут:
Illuminate\Routing\Route.php
/**
     * Get or set the domain for the route.
     *
     * @param  string|null  $domain
     * @return $this|string|null
     */
    public function domain($domain = null)
    {
        if (is_null($domain)) {
            return $this->getDomain();
        }

        $parsed = RouteUri::parse($domain);

        $this->action['domain'] = $parsed->uri;

        $this->bindingFields = array_merge(
            $this->bindingFields, $parsed->bindingFields
        );

        return $this;
    }
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@turindd Автор вопроса
я добавил middleware который отлавливает поддомены,
- находит есть ли в БД такой город,
- если есть то пропускает
- записывает в сессию город
- в контроллере я получаю город и формирую выдачу товаров по этому городу и др.

'domain' => '{city_alias}.website.ru', я убрал
без него я могу формировать ссылки с website.ru на nsk.website.ru и наоборот
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы