Laravel по-русски

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

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

#1 24.09.2014 06:48:47

Alex

Костыли, помогите оптимизировать роут

нагородил вот таких вот костылей, чтобы сабдомены работали
основной смысл с том, чтобы страница города была на сабдомене в виде
mosva.aviaproject.new, kazan.aviaproject.new, а все остальные страницы сайта была на основном домене aviaproject.new


и вот такими костылями решил сделать, так как по другому не получалось


$flug = str_replace('.aviaproject.new', '', $_SERVER['SERVER_NAME']);
If ($flug !== 'aviaproject.new')
{
    $city = DB::table('cities')->where('slug', $flug)->first();
    $fors = $city;
    $domzen = $city->slug . '.aviaproject.new';
    if ($city->slug == $flug)
    {

         Route::group(array('domain' => $domzen), function()
         {
         Route::get('/', function(){
          $flug = str_replace('.aviaproject.new', '', $_SERVER['SERVER_NAME']);
          $city = DB::table('cities')->where('slug', $flug) -> first();
             return View::make('city.single', compact('city'));
         });
         });

    } else
    {

         Route::get('/', 'HomeController@showWelcome');
         Route::get('info', 'HomeController@showInfo');
         Route::get('city', 'CityController@show');
         Route::get('airlines', 'AirlinesController@index');
         Route::get('airline/{slug}', 'AirlinesController@show');


    }
} else
{
     Route::get('/', 'HomeController@showWelcome');
     Route::get('info', 'HomeController@showInfo');
     Route::get('city', 'CityController@show');
     Route::get('airlines', 'AirlinesController@index');
     Route::get('airline/{slug}', 'AirlinesController@show');


}


Уверен, что можно это сделать более правильно и компакно, так как это реальные костыли))
спасибо заранее

#2 24.09.2014 10:46:07

Alex

Re: Костыли, помогите оптимизировать роут

понимаю, что задача достаточно сложная)
заранее спасибо

#3 25.09.2014 00:00:11

Wide

Re: Костыли, помогите оптимизировать роут

http://laravel.com/docs/4.2/routing#sub-domain-routing

Route::group(array('domain' => '{account}.myapp.com'), function()
{

    Route::get('user/{id}', function($account, $id)
    {
        //
    });

});

#4 25.09.2014 01:12:46

Wide

Re: Костыли, помогите оптимизировать роут

Route::group(array('domain' => '{city}.yourdomain com'), function()
{
    Route::get('/', function($city)
    {
        echo 'Главная города ' . $city . ' на домене третьего уровня';
    });
	Route::get('/news', function($city)
    {
        echo 'Новости города ' . $city . ' на домене третьего уровня';
    });
});

Route::get('/', function()
{
	echo 'Главная на основном домене';
});

Route::get('/news', function()
{
	echo 'Новости на основном домене';
});

#5 29.09.2014 14:34:55

Alex

Re: Костыли, помогите оптимизировать роут

спасибо, но при загрузке страницы
4to-ugodno.yourdomain com
мне отдается контект
Route::get('/', function()
{
    echo 'Главная на основном домене';
});

а должна отдаваться ошибка 404 или редиректить на yourdomain com
так как поле {city} не соответствует полю {slug} в базе

#6 29.09.2014 15:49:23

Wide

Re: Костыли, помогите оптимизировать роут

а должна отдаваться ошибка 404 или редиректить на yourdomain com

Само по себе ничего не делается.

$city = City::where('name', '=', $city)->first();

if(!$city)
{
	return Response::make('Not Found', 404);
}

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