shishima / dynamic-view-value-render
该软件包支持根据预定义配置在视图文件中显示值。
Requires
- php: ^8.0
This package is auto-updated.
Last update: 2024-09-15 04:00:27 UTC
README
该软件包支持根据预定义配置在视图文件中显示值。您不需要直接修改blade文件,只需调整配置,该软件包将为您处理转换。
安装
您可以通过composer安装该软件包
composer require shishima/dynamic-view-value-render
用法
-
在
config目录中创建一个配置文件例如:为home blade创建一个配置文件
return [ 'delivery_date' => [ 'type' => [\Shishima\ConvertExport\Pipeline\DB::class], 'value' => 'location.name' ] ]; ...
-
在控制器或类似的地方,在返回视图之前,使用
dynamic_render_set_data函数分配输入数据例如:app/Controllers/HomeController.php
$data = [ 'estimate' => $estimate, 'company' => $company ] dynamic_render_set_data(data: $data); // <-- Here return view($view, ...));
您可以使用compact函数收集数据到数组中,然后将其传递给
dynamic_render_set_data函数$data = compact('estimate', 'company'); dynamic_render_set_data(data: $data); // <-- Here return view($view, ...));
-
在blade文件中,需要在显示值的位罝使用
dynamic_render_value函数根据初始配置输出值<div> <p>{{ dynamic_render_value(config('transform.delivery_date')) }}</p> </div>
配置
在配置文件中,有两个可配置的值:type和value
类型
配置的参数将是一个数组。在数组中会有用于转换输出数据的类
有2个类可用
-
\Shishima\ConvertExport\Pipeline\DB::class
该类用于从变量内部检索数据。可以通过点
.符号访问多级嵌套数据使用值配置指定获取值的键
例如
'delivery_date' => [ 'type' => [\Shishima\ConvertExport\Pipeline\DB::class], 'value' => 'location.city.name' ] ];
-
\Shishima\ConvertExport\Pipeline\Fixed::class
该类用于打印出在
value中配置的预定义值例如
'delivery_date' => [ 'type' => [\Shishima\ConvertExport\Pipeline\Fixed::class], 'value' => 'Hello world!' ] ];
自定义转换
在实际情况下,数据转换可能涉及特殊案例。在这种情况下,为了处理这些案例,我们可以创建一个专门的处理类,并将其传递给类型以供软件包自动处理
由于type是一个数组,可以在此处传递多个处理类。数据将按从左到右的顺序进行处理
此类的输出数据将是下一个类的输入数据
例如:创建UpperCase类
namespace App\Transform; use Illuminate\Support\Arr; use Shishima\ConvertExport\Pipeline\ConvertExportBase; class UpperCase extends ConvertExportBase { public function __invoke($payload) { $value = Arr::get($payload, 'value', ''); $dataInput = Arr::get($payload, 'dataInput'); $config = Arr::get($payload, 'config'); // transform value return strtoupper($value); } }
重要!如果此类仅执行单个任务,则必须使用__invoke方法
自定义类必须扩展ConvertExportBase类
参数$payload是一个包含3个值的数组
- value:先前处理步骤的输入数据
- dataInput:使用
dynamic_render_set_data函数分配的所有数据 - config:通过
dynamic_render_value函数传递的配置
创建自定义类后,在配置文件中配置此类
'delivery_date' => [ 'type' => [ \Shishima\ConvertExport\Pipeline\Fixed::class, \App\Transform\UpperCase::class, ], 'value' => 'Hello world!' ] ];
自定义类包含多个处理方法
该软件包还支持在一个类中编写多个处理函数
为此,方法必须以convert前缀开头
例如
namespace App\Transform; use Illuminate\Support\Arr; use Shishima\ConvertExport\Pipeline\ConvertExportBase; class Transform extends ConvertExportBase { public function convertUpper($payload) { // ... } public function convertLower($payload) { // ... } }
要在配置文件中使用这些函数,它们将在类型下配置。不需要convert前缀
'delivery_date' => [ 'type' => [ '\App\Transform\Transform:Upper,Lower', ], 'value' => '' ] ];
值
用于DB::class和Fixed::class检索数据
如果不使用上述两个类,可以留空
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息
贡献
请参阅CONTRIBUTING以获取详细信息
安全漏洞
请查看我们的安全策略,了解如何报告安全漏洞
致谢
许可协议
MIT 许可协议 (MIT)。请参阅许可文件以获取更多信息