Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel刀片动态目录_Php_Laravel_Laravel 5_Laravel 5.1_Laravel Blade - Fatal编程技术网

Php Laravel刀片动态目录

Php Laravel刀片动态目录,php,laravel,laravel-5,laravel-5.1,laravel-blade,Php,Laravel,Laravel 5,Laravel 5.1,Laravel Blade,我正在研究一个模块化结构,如下所示 modules module controllers models views 然而,我正在努力弄清楚如何从动态目录加载视图,例如,可能有20个不同的模块,每个模块都从自己的目录加载视图,刀片服务器当前呈现模板的方式是否可能做到这一点?签出乒乓球/modules:。这个软件包可以做你想做的事情,还有更多 要从特定模块(使用上述软件包)加载视图,请执行以下操作: 视图(“模块名:视图名称”)> P>尽管

我正在研究一个模块化结构,如下所示

modules
    module
        controllers
        models
        views

然而,我正在努力弄清楚如何从动态目录加载视图,例如,可能有20个不同的模块,每个模块都从自己的目录加载视图,刀片服务器当前呈现模板的方式是否可能做到这一点?

签出
乒乓球/modules
:。这个软件包可以做你想做的事情,还有更多

要从特定模块(使用上述软件包)加载视图,请执行以下操作:


<代码>视图(“模块名:视图名称”)

> P>尽管您询问的是“模块化”行为,如评论中提到的,您可能需要考虑服务提供者和包。拉雷维尔更是如此。如前所述,您可以在Wikipedia上了解有关SOA的更多信息

IMHO模块是一种古老的做法,在依赖关系方面是不灵活的——当两个包需要覆盖一个包中的同一依赖关系,但又彼此不知道时——哪个优先

创建包 为了让您能够开始,最快的方法是创建您自己的包,该包将有自己的存储库(我们假设它是GIT和本地存储库-它可以在任何地方,GitHub上的私有存储库、Bitbucket甚至您自己的私有服务器)

首先创建您的存储库,我假设您是在本地
/Users/developer/Projects
中进行的

$ cd ~/Projects
$ git init blog
根据,您需要一个Composer配置,以便您的应用程序在
供应商中更新软件包

您将希望在刚刚创建的
博客
存储库(文件:composer.json)中创建此文件

因此,您的包结构应该如下所示:

blog/
├── database/
    ├── migrations/
    ├── seeds/
├── resources/
    ├── assets/
    ├── lang/
    ├── views/
├── src/
    ├── BlogServiceProvider.php
├── composer.json
├── readme.md
这里唯一必需的文件/目录是
composer.json
文件和
src
目录

如果您参考,您将很快了解如何设置服务提供商、路由服务提供商并使包可发布。这就是你想要达到的目标

当您将内容发布到应用程序中时,它允许您覆盖应用程序中的视图,并使您的包保持通用性,而无需将内容组合在一起

登记包裹 现在,您想在应用程序中注册软件包,只需编辑应用程序/project
composer.json

由于您的软件包是私有的,您需要告诉composer您的存储库在哪里。在
“type”:“project”之后,
config需要定义存储库;比如:

"repositories": [
    {
        "type": "vcs",
        "url": "/Users/developer/Projects/blog"
    }
]
您需要通知composer您需要您的博客包,当composer无法在PackageGist上发现它时,存储库只定义它的位置

"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.*"
},
代码示例 您可以查看以构建包



结束;软件包的功能类似于模块,只是软件包有更多的优点,所有这些优点都列为的一部分,并且有一个学习曲线。

您为什么要使用模块结构而不是创建软件包和服务提供商?这几乎是完全一样的,但更坚实的原则。@ash不,没有理由,除了我从未为Laravel开发过包,因为包永远不会公开,我认为模块化结构更有意义。啊,我也这么认为。软件包不必公开,我会提供一些好的说明来回答。如果你不遵循它,我相信它会帮助一些人。我不想只为一个功能添加另一个包。我指出,该包在Laravel中为你提供了一个模块化结构,而不仅仅是一个功能。你提出了许多我没有想到的有效点。当然,在未来,这似乎是必然的趋势,作为项目的唯一开发者,这确实有点极端。非常感谢你的深入回答,它回答了许多我没有想到的问题。
"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
    "vendor/blog": "1.0.*"
},