【问题标题】:Adding Sentry 2 config in Workbench Package在 Workbench 包中添加 Sentry 2 配置
【发布时间】:2014-01-22 06:02:40
【问题描述】:

我正在使用 laravel 4.1 并在工作台中处理我自己的包。我在我的包 composer.json 中添加了额外的 repo (sentry 2)。 Sentry 工作正常,但我无法通过从 workbench/package/name/src/config/packages/cartalyst/sentry/config.php 加载配置文件来覆盖配置

我的服务提供者是这样的:

    public function boot()
{
    // https://coderwall.com/p/svocrg
    $this->package('package/name');

    $config_path = __DIR__ . "/../../config/packages/cartalyst/sentry";
    $this->app['config']->package('cartalyst/sentry', $config_path, 'cartalyst/sentry');

    $this->app->register('Cartalyst\Sentry\SentryServiceProvider');

    include __DIR__.'/../../routes.php';
}

        public function register()
{
    $this->app->booting(function()
    {
        $loader = \Illuminate\Foundation\AliasLoader::getInstance();
        $loader->alias('Sentry', 'Cartalyst\Sentry\Facades\Laravel\Sentry');
    });
}

当我覆盖 config.php (workbench/package/name/src/config/packages/cartalyst/sentry/config.php) 中的某些内容时,我仍然从 vendor/cartalyst/sentry/src/config/config.php 获取内容.如何在工作台包中正确加载配置

【问题讨论】:

    标签: php symfony laravel


    【解决方案1】:

    我认为你不能,因为正如 cartalyst sentry 官方网站“哨兵是第三方”所解释的那样

    但您仍然可以在工作台中的作曲家文件中做一些技巧。

    在工作台中的 composer.json 中:

    "scripts": {
            "post-install-cmd": [
                "php artisan clear-compiled",
                "php artisan optimize",
                "php artisan app:sentry" /* add your own command which organize to create your own sentry configuration (remember mkdir cartalyst/sentry/config.php store to app/config/packages) */
            ],
            // more
        },
    

    这意味着,当你的包在安装时,你自己的命令(例如:php artisan app:sentry)将被执行

    希望对你有帮助……

    或者,或者(更简单)

    在您的作曲家脚本键中添加:

    "php artisan config:publish --package=cartalyst/sentry"
    

    然后,在 PackageServiceProvider 的引导方法中, 设置自己的配置。 例如:

    public function boot()
    {
        // for change user sentry model
        \Config::set('sentry::config.user.model', 'Vendor\Package\YourUserModel');
    }
    

    我认为这是更简单的方法。 :)

    【讨论】:

      【解决方案2】:

      下面的示例显示了我如何在我的包(工作台)中添加 Basset 的配置覆盖。您必须将此代码放入您的服务提供商的register 方法中。

      // Get config loader
      $loader = $this->app['config']->getLoader();
      
      // Add package namespace with path set base on your requirement
      $loader->addNamespace('basset',__DIR__.'/../config/basset');
      
      // Load package override config file
      $configs = $loader->load($this->app['config']->getEnvironment(),'config','basset');
      
      // Override value
      $this->app['config']->set('basset::config',$configs);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-01
        • 2018-10-24
        • 2016-05-28
        • 2014-09-05
        • 2014-06-25
        • 1970-01-01
        • 2018-03-28
        • 2016-12-09
        相关资源
        最近更新 更多