Laravel по-русски

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

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

#1 11.08.2014 10:15:36

Как отделить frontend и backend?

Недавно начал разработку приложений на Laravel. (имею опыт работы с Yii Framework).
Интересует, как разделить frontend от backend?

Не в сети

#2 11.08.2014 10:56:16

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Как отделить frontend и backend?

в bootstrap/start.php
Detect The Application Environment
разделяйте по своим условиям
Я разделяю на уровне хоста, как пример

$env = $app->detectEnvironment(function() use ($app){
    $env = 'production';
    if($app['request']->getHost() == 'manager.site.ru'){
        $env = 'manager';
    }
    return $env;
});

тогда структура

config
    ->manager
    ->production
controllers
    ->manager
    ->production

и.т.д.

Это для L4, в L3 немного по другому.

далее роуторы разделяю в app/routes.php

if (App::environment('manager'))
{
    require_once app_path() . '/routes/manager.php';
}
else
{
    require_once app_path() . '/routes/front.php';
}

If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#3 11.08.2014 17:37:53

Re: Как отделить frontend и backend?

Artdevue, вы или не поняли топикстартера, или я не понял вас, или делаете у себя что-то очень странное. Environment предназначено для определения настроек для запуска приложения на разных серверах (у себя дома, на тестировочном и рабочем), а не для доступа в админку.

etibar, фронт и бэк в данном случае это админка / сам сайт, или клиентсайд на js / серверсайд на ларавеле ? Если первое, то как обычно - в папке контроллеров можно сделать подпапку для контроллеров админки (или в неймспейсе, если вы пишете в нем, делаете папку для бэкенда и там кладете его сервис-провайдер, модели, контроллеры, репозитории, обсерверы, презенторы и т.п.), у пользователя вводится система прав (в простейшем случае флаг is_admin в таблице users), и роуты админки оборачиваете в группу, на которую вешаете написанный вами фильтр "admin", в котором проверяете права доступа залогиненого пользователя.

Изменено slider23 (11.08.2014 17:38:48)

Не в сети

#4 11.08.2014 22:32:49

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Как отделить frontend и backend?

@slider23 вы наверное не обращали внимание, что в вашем случае разделения фронта и бэка чисто визуальное, т.е. при загрузке фронта вы тянете весь мусор с бэка.
Я не буду утверждать в правильности решения, но я привёл пример тот, которым я пользуюсь.
Возможно ошибочное решения, но у меня рабочее.


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#5 12.08.2014 09:43:32

Re: Как отделить frontend и backend?

Да, я забыл упомянуть, что во views надо тоже сделать свою подпапку и лейауты страниц у фронта и бэка будут, естественно,  разные. Благо, наш шаблонизатор позволяет удобно "наследоваться" вьюхам от разных источников при помощи @extend.

Не в сети

#6 12.08.2014 13:28:10

Re: Как отделить frontend и backend?

Artdevue пишет:

т.е. при загрузке фронта вы тянете весь мусор с бэка.

Что вы имеете в виду под мусором? Каким образом что-то может тянуться, если на фронте/бэке используются разные контроллеры/шаблоны?

P.S. Использую способ аналогичный предложенному @slider23, только для управления пользователями подключаю Cartalyst\Sentry.

Изменено konfuji (12.08.2014 13:35:33)


Taylor Otwell @taylorotwell
In other news, features debuting at @laraconeu are going to rock your world. Can’t wait to show you!
http://live.laracon.eu/

Не в сети

#7 15.10.2014 14:32:49

Re: Как отделить frontend и backend?

slider23, вы не могли бы подробнее написать про способ с подпапкой для контроллеров админки?
Достаточно в папке controllers создать папку admin, и все?

Не в сети

#8 15.10.2014 17:56:01

Re: Как отделить frontend и backend?

Нет, еще нужно внести изменения в файл контроллера и файл роутов.

У контроллера указать неймспейс по названию папки и путь до BaseController ("\"):

<?php namespace Admin;

class SomeController extends \BaseController {

А у роутов писать путь до контроллера с учетом папки-неймспейса:

Route::get( 'admin/some', 'Admin\SomeController@index');

А можно вместо этого сгенерить папку-модуль Admin моим модулятором https://github.com/slider23/laravel-modulator . Там будут и контроллеры и вьюхи, и всякие служебные админские классы положить можно.

Изменено slider23 (15.10.2014 17:56:16)

Не в сети

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