2014-10-06 3 views
2

Я написал REST API с Laravel. Кроме того, я хочу создать панель администратора с множеством статистических данных и «мощными» средствами модерации, которые должны отображаться на стороне сервера. В то время как REST API использует OAuth2.0 и возвращает JSON + HAL (HATEOAS), панель администратора будет использовать аутентификацию HTTP Basic, а также учетную запись обычного учетного имени с аутентификацией на основе сеанса.Laravel: удлинить модели со второго приложения Laravel

Я знаю, что было бы легко использовать второй фильтр auth-filter и Route, чтобы все это происходило в одном приложении. И я знаю, что libs загружаются только при необходимости. Но я хочу создать второе приложение, которое полностью независимо.

Почему? Чтобы облегчить REST API: нет ненужных библиотек, нет второго уровня авторизации, нет дополнительных маршрутов, правил и фильтров и т. Д. REST API - это Restful, и я не хочу добавлять дополнительный беспорядок. Хотя это может сделать тестирование немного сложнее.

Вот как это должно выглядеть следующим образом:

бэкэндом

  • отдыха (Laravel приложение 1)

- приложение

--- модели

--- - RestapiModel.php

  • Администратор (приложение Laravel 2)

- приложение

--- модели

---- AdminModel.php

Проблема is: В приложении 2 мне нужно работать с моделями приложения 1 Так что я хотел бы сделать s.th. как

class AdminModel extends RestapiModel { 

    protected $connection = 'application_1_database'; 

    // Statistical methods 
    // Database manipulation 
    // etc. 
} 

теперь у меня есть два вопроса:

  1. Как я могу сделать это возможным? «AdminModel extends RestapiModel» не будет работать. Должен ли я использовать пространства имен, черты или просто включать модель поверх файла? Как бы вы решили это?

  2. Что вы думаете о полном подходе к отдельным API и администрированию?

Заранее спасибо

Phil

+0

Couldnt Админцентре просто взаимодействовать с API, а? Затем у вас есть один «интерфейс» для вашего приложения ... – Laurence

+0

Это также добавит много помех для контроллеров, так как мне нужно будет добавить уровень разрешений или ролей к контроллерам, поскольку администраторы имеют больше прав и возможностей, чем обычные клиенты , Конечно, для некоторых нормальных методов это сработает. Но это также затруднит различие между функциями администратора и «нормальными» функциями. Но, честно говоря, я просто не люблю иметь административные функции и клиентские функции в одном и том же месте. Просто ощущение, что это сделает модели, а также контроллеры действительно большими. – pz90

ответ

0

Это не красиво, но вы можете использовать require импортировать файл (ы)

require base_path().`/../rest/models/RestapiModel.php`; 

class AdminModel extends RestapiModel { 

    protected $connection = 'application_1_database'; 

    // Statistical methods 
    // Database manipulation 
    // etc. 
} 

Или вы можете autload все модели rest api с использованием композитора.Ваш composer.json в приложении администратора может выглядеть следующим образом:

// ... 
"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "../../rest/app/models", 
     "app/database/migrations", 
     // ... 
    ] 
}, 
// ... 

(После того, как изменения в разделе Автозагрузка убедитесь запустить composer dump-autoload)

Смежные вопросы