starfolksoftware / kalibrant
一个用于管理模型设置的包。
v1.0.3
2023-02-15 13:30 UTC
Requires
- php: ^8.0
- spatie/laravel-package-tools: ^1.9.2
- symfony/options-resolver: ^6.0
Requires (Dev)
- nunomaduro/collision: ^6.0|^7.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0|^8.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
README
简介
对于您的 Laravel 9.x 应用程序,Kalibrant
是一个提供简单方式管理模型设置的包。这是管理用户和团队模型设置的一种简单方式。
安装
您可以通过 Composer 安装此包
composer require starfolksoftware/kalibrant
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="kalibrant-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="kalibrant-config"
这是已发布配置文件的内容
return [ /** * Define all the settings groups. */ 'groups' => [ // 'setting-group' => SettingGroup::class, ], 'middleware' => ['web'], ];
用法
将 HasSetting
特性添加到您的模型中
<?php namespace App\Models; use StarfolkSoftware\Kalibrant\HasSettings; class User extends Authenticatable { use HasSetting; }
您可以通过在终端运行以下命令创建一个新的设置文件
php artisan make:setting AutopilotSettings
这将创建一个位于 /app/Settings/
目录下的新文件。以下是一个示例文件
<?php namespace App\Settings; use App\Models\User; use StarfolkSoftware\Kalibrant\Settings; use Symfony\Component\OptionsResolver\OptionsResolver; class AutopilotSettings extends Settings { /** * The route to redirect to after update. * * @var mixed */ public $redirectRoute = 'profile.show'; /** * Constructor. * * @param mixed $id * @return void */ public function __construct( protected $id ) { parent::__construct(); } /** * Configure the settings attributes * * @param OptionsResolver $resolver * * @return void */ public function configureAttributes(OptionsResolver $resolver) { $resolver->define('enabled') ->default(false) ->allowedTypes('boolean') ->info('Whether autopilot is enabled'); $resolver->define('channels') ->default(['twitter']) ->allowedTypes('array') ->info('The channels to autopilot'); $resolver->define('tweet_freq') ->default(60) ->allowedTypes('integer', 'string') ->info('Tweets count every hour.'); $resolver->define('retweet_freq') ->default(15) ->allowedTypes('integer', 'string') ->info('Number of retweets in an hour'); $resolver->define('like_freq') ->default(15) ->allowedTypes('integer', 'string') ->info('Number of likes in an hour'); $resolver->define('follow_freq') ->default(15) ->allowedTypes('integer', 'string') ->info('Number of follows in an hour'); $resolver->define('hashtags') ->default(['#programming', '#dev']) ->allowedTypes('array') ->info('Relavant hashtags.'); } /** * Returns the setable type * * @return string */ public static function setableType() { return User::class; } /** * Returns the setable id * * @return int */ public function setableId() { return $this->id; } /** * Return the settings group * * @return string */ public static function group() { return 'autopilot-settings'; } /** * Validation rules. * * @return array */ public function rules(): array { return [ 'enabled' => ['required', 'boolean'], 'channels' => ['required', 'array'], 'channels.*' => ['required', 'string', 'in:twitter,facebook,instagram,linkedin'], 'tweet_freq' => ['required', 'integer', 'max:12'], 'retweet_freq' => ['required', 'integer', 'max:12'], 'like_freq' => ['required', 'integer', 'max:12'], 'follow_freq' => ['required', 'integer', 'max:12'], 'hashtags' => ['required', 'array'], 'hashtags.*' => ['required', 'string'], ]; } }
要更新设置,请向 route('settings.update', ['group' => '..', 'id' => '...'])
发送一个带有定义属性的 PUT
请求。以下是一个更新上述设置的示例请求
<?php $response = $this->putJson(route('settings.update', ['group' => 'autopilot-settings', 'id' => $user->id]), [ 'enabled' => true, 'channels' => ['twitter', 'facebook'], 'tweet_freq' => '60', 'retweet_freq' => '15', 'like_freq' => '15', 'follow_freq' => '15', 'hashtags' => ['#programming', '#dev'], ]);
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志
贡献
有关详细信息,请参阅 贡献指南
安全漏洞
有关报告安全漏洞的详细信息,请参阅 我们的安全策略
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件