【问题标题】:Trying to get a config value from a package in laravel returns null尝试从 laravel 中的包中获取配置值返回 null
【发布时间】:2014-02-20 18:12:43
【问题描述】:

我正在为 Laravel 4 创建一个包,它将有一个配置文件,用户可以在其中输入包使用的服务的 api 密钥。但是,我无法访问配置值。每当我尝试访问该值时,它总是返回 null。下面是我的代码:

这是服务提供者的注册方法,这里调用了config值:

public function register()
{
    $this->app->bind('Datumbox', function($app){
        return new \Carwyn\LaravelDatumbox\Lib\DatumboxAPI(
            $this->app['config']->get('laravel-datumbox::api_key')
        );
     });
}

我遇到问题的部分是

$this->app['config']->get('laravel-datumbox::api_key')

我从包的 src/config 目录中的 config.php 文件中调用 api_key 值的部分。

我的配置文件如下:

<?php

return array(

    'api_key' => 'apikeyhere',

);

任何帮助将不胜感激。

【问题讨论】:

  • 配置文件在哪里?

标签: php laravel laravel-4


【解决方案1】:

您的配置文件应位于:

src/config/config.php

并确保您还拥有:

public function boot()
{
    $this->package('carwyn/laravel-datumbox');
}

另请注意,Laravel 会相对于 ServiceProvider 文件查找配置文件(它在内部使用 __DIR__.'../../'),我的路径与正常路径不同,所以我不得不:

$this->package('pragmarx/glottos', 'pragmarx/glottos', __DIR__.'/../../../..');

我在我的服务提供者中有这个方法作为助手,它不使用get 方法,但它可能没有太大区别:

public function getConfig($key)
{
    return $this->app['config']["pragmarx/glottos::$key"];
}

【讨论】:

  • 抱歉文件路径是你所说的,我在最初的帖子中弄错了。我的服务提供商也有这种确切的方法。
  • package() 方法中的第二个参数应该指向哪里?直接到config.php文件还是到src目录?我认为您正在做某事,因为我的提供程序文件不在通常的位置。
  • 非常感谢,我在 $this->package 部分添加了第二个和第三个参数,它返回的值很好。你能告诉我你在哪里读到的包装方法吗?
  • 我不同意将 ServiceProvider 放在我的主类的同一个目录中,所以(不)幸运的是,我不得不挖掘资源以找到方法。 :)
  • 这在 Laravel 5 中有改变吗?我正在将运行 laravel 4 的应用程序转换为 5,现在我的配置无法正常工作。
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多