codicastudio/setting

一个随机的 Codica Studio 包。

1.0.0 2020-10-16 18:39 UTC

This package is auto-updated.

Last update: 2024-09-17 03:12:30 UTC


README

此包允许您以更持久的方式保存设置。您可以使用数据库和/或JSON文件来保存您的设置。您还可以覆盖Laravel配置。

  • 驱动支持
  • 辅助函数
  • Blade指令
  • 覆盖配置值
  • 加密
  • 自定义文件、表和列
  • 自动保存
  • 额外列
  • 缓存支持

入门指南

1. 安装

运行以下命令

composer require codicastudio/setting

2. 注册(对于Laravel < 5.5)

config/app.php中注册服务提供者

codicastudio\Setting\Provider::class,

如果您想使用外观,请添加别名。

'Setting' => codicastudio\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指令如@setting('foo')在blade模板中直接获取设置

覆盖配置值

您可以通过将它们添加到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的名称。

加密

如果您想为给定的密钥加密值,可以将密钥传递到config/setting.php中的encrypted_keys选项,其余部分将由Laravel内置加密功能自动处理。示例

'encrypted_keys' => [
    "payment.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 codicastudio\Setting\Contracts\Driver
{
	// ...
}

setting()->extend('mydriver', function($app) {
	return $app->make('MyDriver');
});

变更日志

有关最近更改的更多信息,请参阅发布

贡献

我们非常欢迎拉取请求。您必须遵循PSR编码标准。

安全

如果您发现任何安全相关的问题,请发送电子邮件到 security@codicastudio.com 而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。更多信息请参阅 LICENSE