remzikocak / laravel-options
Laravel 9/10/11 数据库选项/设置包。
2.1.0
2024-01-21 13:57 UTC
Requires
- php: ^8.1
- ext-json: *
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.0
README
Laravel 选项包
此包可以帮助您在后台面板中动态添加选项字段。
安装
您可以通过composer安装此包
composer require remzikocak/laravel-options
包将自动注册服务提供者和外观。之后,您需要发布和迁移
php artisan vendor:publish --provider="RKocak\Options\OptionsServiceProvider"
php artisan migrate
这将创建迁移文件和config文件夹中的options.php文件。
用法
首先,您需要创建一个选项组和选项。
use RKocak\Options\Models\Optiongroup; use RKocak\Options\Models\Option; Optiongroup::create([ 'label' => 'My Optiongroup', 'description' => 'Optiongroup description', // can be null 'display_order' => 1, ]); Option::create([ 'name' => 'myOption' // should be unique 'label' => 'My Option', 'description' => 'My awesome Option', 'value' => 'Option value', 'type' => 'text', ]);
选项组和选项之间存在多对多关系。组可以有多个选项,选项也可以属于多个组。理解这种关系对于在后台面板中显示它们至关重要。
对于分配,使用以下方法
$group = Optiongroup::find(1); $option = Option::find(1); // Assign option to a group $group->options()->attach($option); // or.. $option->groups()->attach($group);
获取选项
要获取计算值,请使用选项模型的getValue()
方法。
$option->getValue(); // This will be the "raw" value that is stored in the database $option->value
更好的选择是利用Options
外观。当您只需要键 => 值存储时,这将缓存选项。
您可以使用以下方式使用它
Options::get('optionName'); // You can pass a second parameter as default value Options::get('optionName', null); // or use the helper function options('optionName', null);
检查给定名称的选项是否存在
Options::has('optionName');
虽然缓存通常会自动刷新,但如果您需要手动刷新,请使用以下方法。
Options::getLoader()->rebuildCache();
添加自定义类型
要添加自定义类型,您需要创建一个扩展 RKocak\Options\Type
的类
示例
<?php namespace App; use RKocak\Options\Models\Option; use RKocak\Options\Type; class MyType extends Type { /** * @return string */ public static function getName(): string { return 'my_type'; } /** * @param Option $option * @return string */ public function render(Option $option): string { return '<div> <input type="text" name="options['. htmlspecialchars($option->name) .']" id="options['. htmlspecialchars($option->name) .']" value="'. htmlspecialchars($option->getValue()) .'" class=""/> </div>'; } /** * Store the new value * * @param $newValue * @param $oldValue * @return mixed */ public function store($newValue, $oldValue) { return $newValue; } /** * Cast value * * @param $value * @return mixed|string */ public function cast($value) { return (string) $value; } }
然后将类添加到配置文件中的类型数组中。之后,您可以使用它就像使用所有其他类型一样。
渲染编辑表单的HTML
使用一些预先添加的“类型”渲染选项很简单。
$option = Option::first(); $html = $option->renderEditHTML(); // ..or $html = $option->toHtml(); // Alternatively, you can use the model instance directly in your Blade views: {{ $option }}
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。