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
目录
如果您参考,您将很快了解如何设置服务提供商、路由服务提供商并使包可发布。这就是你想要达到的目标
当您将内容发布到应用程序中时,它允许您覆盖应用程序中的视图,并使您的包保持通用性,而无需将内容组合在一起
登记包裹
现在,您想在应用程序中注册软件包,只需编辑应用程序/projectcomposer.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.*"
},