首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel 5的动态路径

laravel 5的动态路径
EN

Stack Overflow用户
提问于 2015-05-08 05:47:42
回答 1查看 1.6K关注 0票数 1

在使用为Laravel 5建造多租赁套餐时,我必须了解如何使路径和命名空间变得动态。

这将涉及:

  • 视图;动态添加根命名空间中可用的模板目录。
  • 动态添加根命名空间中可用的语言目录
  • 路由;动态添加路由文件
  • 从动态位置合并其他配置文件
  • 供应商;允许自定义供应商和包从动态位置可用
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-08 05:47:42

视图

使用服务提供者,您可以在boot()方法中使用以下方法使视图在根命名空间中可用(view('your-view')而不是view('package::your-view')):

代码语言:javascript
复制
$this->app['view']->addLocation('/your/new/location');

语言

使用服务提供者,您可以在boot()方法中使用以下内容,其中$path是根命名空间转换的新路径:

代码语言:javascript
复制
$app->bindShared('translation.loader', function($app) use ($path)
{
      return new \Illuminate\Translation\FileLoader($app['files'], $path);
});
$app->bindShared('translator', function($app)
{
      $translator = new \Illuminate\Translation\Translator($app['translation.loader'], $app['config']['app.locale']);
      $translator->setFallback($app['config']['app.fallback_locale']);
      return $translator;
});

路线

到目前为止,路线是最简单的。只需使用require_once或使用Laravel方法:\File::requireOnce()将它们包括在内。

配置

我使用了一个目录,允许租户否决核心信任。请注意,这里没有安全检查,也没有卫生检查,因此访问应该受到限制。

使用服务提供者,您可以在boot()方法中使用以下内容

代码语言:javascript
复制
 foreach (\File::allFiles('/path/to/configs') as $path) {
       $key = \File::name($path);
       $app['config']->set($key, array_merge(require $path, $app['config']->get($key, [])));
 }

这将通过覆盖现有配置的值与提供的配置文件合并现有配置。

供应商

真正有趣的是使用动态加载类的可能性。为此,您需要在您的ClassLoader addDirectories()方法中使用服务提供者

代码语言:javascript
复制
\Illuminate\Support\ClassLoader::addDirectories(['/path/to/vendors']);

其他考虑因素

以上代码可以使用服务提供者实现。为了使服务器提供程序工作,必须将它们添加到providers数组下的config/app.php文件中。不这样做将不会启用服务提供程序中的任何代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30116617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档