gocrew / laravel-settings
Requires
- php: >=5.5.0
- illuminate/http: ~5
- illuminate/support: ~5
Requires (Dev)
- illuminate/database: ~5
- illuminate/filesystem: ~5
- mockery/mockery: 0.9.*
Suggests
- illuminate/database: Save settings to a database table.
- illuminate/filesystem: Save settings to a JSON file.
This package is not auto-updated.
Last update: 2017-11-19 20:17:10 UTC
README
安装
将 Presenter 添加到您的 composer.json 文件中
"require": { "gocrew/laravel-settings": "~1.0" }
现在,从您的项目根目录运行 composer update 命令
composer update
注册包
在 app/config/app.php
中包含服务提供者。服务提供者对于生成 artisan 命令是必需的。
'providers' => [ ... gocrew\LaravelSettings\SettingsServiceProvider::class ... ];
现在运行 php artisan vendor:publish
来发布配置文件和迁移。配置文件将允许您控制使用哪种存储引擎以及一些存储特定设置。
可选地,您还可以注册此包的 Facade。
'facades' => [ ... 'Setting' => gocrew\LaravelSettings\Facade::class ... ];
重要如果您使用数据库驱动程序,不要忘记通过运行 php artisan migrate
来迁移数据库。
用法
您可以通过其 Facade 或通过类型提示 gocrew\LaravelSettings\Contracts\SettingsContract
接口来访问设置存储。
Setting::set('foo', 'bar'); $setting = Setting::get('foo', 'default value');
显式调用 Setting::save()
以保存所做的更改。
自动保存
如果您将中间件 gocrew\LaravelSettings\Middleware\SavableMiddleware.php
添加到 app\Http\Kernel.php
中的 middleware
列表中,设置将在所有 HTTP 请求结束时自动保存。您仍然需要在控制台命令、队列工作者等地方显式调用 Setting::save()
。
数据库存储
如果您想在同一个数据库中为多个用户/客户存储设置,可以通过指定额外的列来实现。
Setting::setExtraColumns(array( 'user_id' => Auth::user()->id ));
当检索设置时,现在会在数据库查询中添加 where user_id = x
,当保存新的设置时,将填充 user_id
。
如果您需要更精细地控制哪些数据被查询,可以使用 setConstraint
方法,它接受一个带有两个参数的闭包。
$query
是查询构建器实例$insert
是一个布尔值,告诉您查询是插入还是不是。如果是插入,通常不需要对$query
做任何事情。
Setting::setConstraint(function($query, $insert) { if ($insert) return; $query->where(/* ... */); });
自定义驱动程序
此包在底层使用 Laravel 的 Manager
类,因此很容易添加自己的自定义设置存储驱动程序。您需要做的就是扩展抽象类 gocrew\LaravelSettings\Drivers\Driver
,实现抽象方法并调用 Setting::extend
。
class MyDriver extends gocrew\LaravelSettings\Drivers\Driver { /** * Read the data from the store. * * @return array */ protected function read() { // TODO: Implement read() method. } /** * Write the data into the store. * * @param array $data * * @return void */ protected function write(array $data) { // TODO: Implement write() method. } } Setting::extend('mydriver', function($app) { return $app->make('MyDriver'); });
许可证
此存储库的内容是在 MIT 许可证 下发布的。