在Workbench Package中添加Sentry 2配置

时间:2014-01-04 15:22:37

标签: php symfony laravel

我正在使用laravel 4.1并在工作台中使用我自己的包。我在我的包composer.json中添加了额外的repo(哨兵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获取内容。如何在Workbench包中正确加载配置

2 个答案:

答案 0 :(得分:1)

我认为你不能,因为官方的卡拉斯特哨所网站上说“哨兵是第三方”

但你仍然可以在workbench的作曲家文件中做一些技巧。

在workbench中的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中的boot方法中, 设置您自己的配置。 例如:

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

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

答案 1 :(得分:1)

下面的示例显示了如何在我的包(workbench)中添加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);