簡體   English   中英

Laravel刀片動態目錄

[英]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來構建您的軟件包。


結論 程序包的功能類似於模塊,除了程序包具有更多優勢外,所有這些都列為SOLID模式的一部分,並且學習過程也很輕松

檢出pingpong/moduleshttp : //sky.pingpong-labs.com/docs/2.1/modules 該軟件包可以完成您想要做的事情,還有更多。

要從特定模塊加載視圖(使用上述程序包),您需要這樣做:

view('moduleName:view-name')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM