2014-10-06 50 views
2

我用Laravel編寫了一個REST API。最重要的是,我想創建一個管理面板,其中包含大量的統計數據和應該在服務器端呈現的「強大」管理工具。 儘管REST API使用OAuth2.0並僅返回JSON + HAL(HATEOAS),但管理面板將使用HTTP基本身份驗證以及基於會話的身份驗證的普通憑證登錄。Laravel:從第二個Laravel應用程序擴展模型

我知道使用第二個認證過濾器和路由組很容易就可以在一個應用程序中完成所有這些工作。而且我知道只有在需要時才加載庫。但是我想創建一個完全獨立的第二個應用程序。

爲什麼? 保持REST API的輕量級:沒有不必要的庫,沒有第二個auth層,沒有額外的路由,規則和過濾器等等。REST API是Restful的,我不想添加額外的混亂。雖然它可能會使測試更復雜一點。

這是應該的樣子:

後端

  • 休息(Laravel應用1)

- 應用

---模型

--- - RestapiModel.php

  • 管理(Laravel應用2)

- 應用

---模型

---- AdminModel.php

問題是:在應用程序2我需要與應用程序的模型1 所以我想做s.th.像

class AdminModel extends RestapiModel { 

    protected $connection = 'application_1_database'; 

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

我現在有兩個問題:

  1. 我怎樣才能實現這一目標? 「AdminModel擴展RestapiModel」不起作用。我必須使用命名空間,特徵還是隻包含文件頂部的模型?你會如何解決這個問題?

  2. 您如何看待分離API和管理的完整方法?

在此先感謝

菲爾

+0

想不出管理部分剛剛與API交互,以及(改變自動加載部分中,確保運行composer dump-autoload後)?然後你有一個'接口'到你的應用程序... – Laurence 2014-10-06 09:46:57

+0

這也會給控制器添加很多混亂因爲我不得不向控制器添加權限或角色層,因爲管理員比普通客戶擁有更多權限和可能性。當然,對於一些正常的方法它會起作用。但它也會使得難以區分管理功能和「正常」功能。但說實話,我只是不喜歡在同一個地方擁有行政職能和客戶端功能。只是一種直覺,它會讓模型和控制器變得非常大。 – pz90 2014-10-06 09:50:03

回答

0

它不漂亮,但你可以用require要導入的文件(S)

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

class AdminModel extends RestapiModel { 

    protected $connection = 'application_1_database'; 

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

或者你可以autload的所有型號休息api使用作曲家。您composer.json在管理應用程序看起來是這樣的:

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