[英]Laravel blade dynamic directory
我正在研究如下的模塊化結構
modules
module
controllers
models
views
但是,我在努力尋找如何從動態目錄中加載視圖的方法,例如,可能有20個不同的模塊,每個模塊都從其自己的目錄中加載視圖,目前刀片式渲染模板的方式是否可行?
盡管您在詢問“模塊化”行為,但是如評論中所述,您可能需要考慮服務提供商和程序包。 Laravel是更多面向服務的體系結構 。 作為參考,您可以在Wikipedia上了解有關SOA的更多信息。
IMHO模塊是一種古老的做法,當涉及到依賴關系時(兩個包需要覆蓋一個包中的相同依賴關系,但又彼此不了解)時,IMHO模塊不靈活-哪個優先?
為了讓您開始使用,最快的方法是創建自己的程序包,該程序包將擁有自己的存儲庫(我們假設它將是GIT和本地存儲庫-它可以在任何位置,但是可以在GitHub,Bitbucket甚至您的私有存儲庫中使用)自己的專用服務器)。
首先創建您的存儲庫,我假設您在/Users/developer/Projects
內部進行本地存儲。
$ cd ~/Projects
$ git init blog
根據Composer文檔,您將需要Composer配置,以便您的應用程序更新vendor
的軟件包。
您將要在剛剛創建的blog
存儲庫中創建此文件(文件:composer.json)。
{
"name": "yourcompany/blog",
"description": "Description of what the package is.",
"version": "1.0.0-dev",
"authors": [
{
"name": "Developer Name",
"email": "developer@company",
"role": "Software Develper"
}
],
"require": {
"php": ">=5.5.9",
},
"autoload": {
"psr-4": {
"Company\\Blog\\": "src/"
}
},
"minimum-stability": "dev"
}
因此,您的程序包結構應類似於以下內容:
blog/
├── database/
├── migrations/
├── seeds/
├── resources/
├── assets/
├── lang/
├── views/
├── src/
├── BlogServiceProvider.php
├── composer.json
├── readme.md
這里唯一的必需文件/目錄是composer.json
文件和src
目錄。
如果您參考Laravel文檔-程序包開發,您將快速學習如何設置服務提供者,路由服務提供者並使包可發布。 這是您要達到的目標?
當您將內容發布到應用程序中時,它允許您覆蓋應用程序中的視圖並保持程序包的通用性,而不會相互干擾。
現在,您想在應用程序中注冊包,只需通過編輯應用程序/項目composer.json
。
由於您的軟件包是私有的,因此您需要告訴作曲者您的存儲庫在哪里。 在"type": "project",
需要定義配置庫; 就像是:
"repositories": [
{
"type": "vcs",
"url": "/Users/developer/Projects/blog"
}
]
您需要通知作曲家您需要您的博客包,當作曲家未能在packagist上發現它時,存儲庫僅定義其位置。
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1",
"vendor/blog": "dev-master"
},
但是,一旦完成軟件包的開發,就應將其移至“ require”列表中,而不是“ require-dev”也要替換該版本:
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"vendor/blog": "1.0.*"
},
您可以查看Laravel Source來構建您的軟件包。
檢出pingpong/modules
: http : //sky.pingpong-labs.com/docs/2.1/modules 。 該軟件包可以完成您想要做的事情,還有更多。
要從特定模塊加載視圖(使用上述程序包),您需要這樣做:
view('moduleName:view-name')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.