spinzar / setting
Laravel 的持久化设置包。
Requires
- php: ^5.6.0|^7.0|^7.1|^7.2|^7.3|^7.4
- laravel/framework: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*
Requires (Dev)
- laravel/framework: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*
- mockery/mockery: 0.9.*|^1.0|^1.1|^1.2|^1.3|^1.4
- phpunit/phpunit: ^4.8|^5.7|^6.5|^7.5|^8.5|^9.3
README
此包允许您以更持久的方式保存设置。您可以使用数据库和/或 JSON 文件来保存设置。您还可以覆盖 Laravel 配置。
- 驱动支持
- 辅助函数
- Blade 指令
- 覆盖配置值
- 自定义文件、表和列
- 自动保存
- 额外列
- 缓存支持
入门
1. 安装
运行以下命令
composer require spinzar/setting
2. 注册(对于 Laravel < 5.5)
在 config/app.php
中注册服务提供者
Spinzar\Setting\Provider::class,
如果您想使用外观,请添加别名。
'Setting' => Spinzar\Setting\Facade::class,
3. 发布
发布配置文件。
php artisan vendor:publish --tag=setting
4. 数据库
为数据库驱动程序创建表
php artisan migrate
5. 配置
您可以从 config/setting.php
文件更改应用程序的选项
用法
您可以使用辅助方法,如 setting('foo')
或外观 Setting::get('foo')
。
外观
Setting::get('foo', 'default'); Setting::get('nested.element'); Setting::set('foo', 'bar'); Setting::forget('foo'); $settings = Setting::all();
辅助函数
setting('foo', 'default'); setting('nested.element'); setting(['foo' => 'bar']); setting()->forget('foo'); $settings = setting()->all();
您可以通过调用 save()
方法来保存更改。
自动保存
如果您在配置文件中启用了 auto_save
选项,则在每次应用程序关闭并且有任何更改时,设置将自动保存。
Blade 指令
您可以直接在 blade 模板中使用辅助方法或 blade 指令,如 @setting('foo')
获取设置。
覆盖配置值
您可以通过将它们添加到 config/setting.php
中的 override
选项来轻松覆盖默认配置值,从而消除修改默认配置文件的需要,并在生产过程中更改这些值。例如
'override' => [ "app.name" => "app_name", "app.env" => "app_env", "mail.driver" => "app_mail_driver", "mail.host" => "app_mail_host", ],
左侧的值对应于相应的配置值(例如:config('app.name')),而右侧是设置表/json 文件中 key
的名称。
JSON 存储
您可以使用 setting()->setPath($path)
修改在运行时使用的路径。
数据库存储
如果您想使用数据库作为设置存储,则应运行 php artisan migrate
。您可以从迁移目录中的 create_settings_table
文件中修改表字段。
额外列
如果您想在同一数据库中为多个用户/客户存储设置,可以通过指定额外列来实现
setting()->setExtraColumns(['user_id' => Auth::user()->id]);
现在将在检索设置时添加到数据库查询的 user_id = x
,并且当保存新设置时,将填充 user_id
。
如果您需要对查询的数据有更精细的控制,可以使用 setConstraint
方法,该方法接受一个带有两个参数的闭包
$query
是查询构建器实例$insert
是一个布尔值,告诉您查询是否为插入。如果是插入,通常不需要对$query
做任何操作。
setting()->setConstraint(function($query, $insert) { if ($insert) return; $query->where(/* ... */); });
自定义驱动
此包在底层使用 Laravel 的 Manager
类,因此很容易添加自己的存储驱动。您需要做的就是扩展抽象类 Driver
,实现抽象方法,并调用 setting()->extend
。
class MyDriver extends Spinzar\Setting\Contracts\Driver { // ... } setting()->extend('mydriver', function($app) { return $app->make('MyDriver'); });
变更日志
请参阅 Releases 以获取有关最近更改的更多信息。
贡献
欢迎提交拉取请求。您必须遵循PSR编码标准。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 security@spinzar.co 反馈,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅 LICENSE。