beat / paquete-opciones-beat
BEAT选项包
v1.2.3
2024-09-19 10:09 UTC
Requires
- php: >=7.4
- ext-json: *
- laravel/framework: 8.*
Requires (Dev)
- orchestra/testbench: 6.0
- phpunit/phpunit: ^9.5
README
本包的目的是让这个包能够非常简单地处理应用程序选项的存储。一个很好的例子是替换.env文件中的常量,比如邮件配置或公司的税务地址,这样就可以使用这个包来提供动态配置,而不必修改这些敏感文件。
如何管理选项?
非常简单,通过服务OpcionesService.php
,你可以获取(方法get
或getTyped
)和修改(方法set
)在配置文件beat_opciones.php
中定义的选项,在opciones
键下。此服务将选项存储在数据库中的opciones
表中。
- 键:选项的名称。
string
- 值:选项的值。
json
- opcionable_type:相关模型的类,如果有的话。
string|null
- opcionable_id:相关模型的ID,如果有的话。
int|null
。
一旦服务创建或修改了选项,它也会保存在缓存中,以避免重复调用数据库。此包提供了五个已定义的路由,可以用来管理选项,而无需向您的项目添加更多代码。
GET => /opciones/{clave}
:接收"模型_id"和"模型_clase"参数。根据接收到的url中的键返回找到的选项的值。GET => /opciones
:接收一个包含要列出的选项键的数组以及"模型_id"和"模型_clase"参数。返回以下结构
[
[
clave => clave1,
valor => valor1,
relacion => // objeto del modelo relacionado o null
],
[
clave => clave2,
valor => valor2,
relacion => // objeto del modelo relacionado o null
],
]
- `PUT => /opciones`: recibe los siguientes parámetros:
[
"opciones" => "required|array",
"opciones.*" => "required|array",
"opciones.*.clave" => ["required",'string', Rule::in(array_keys(OpcionesService::OPCIONES()))],
"opciones.*.valor" => ["required"],
"opciones.*.modelo_clase" => ["sometimes", 'required_with:modelo_id', 'string'],
"opciones.*.modelo_id" => ["sometimes", 'required_with:modelo_clase', 'numeric'],
]
Actualiza cada opción recibida y devuelve la misma estructura que el endpoint anterior.
- `PUT => /opciones/{clave}`: modifica el valor de la opción encontrada según la clave recibida en la url. Recibe un parámetro "valor", "modelo_id" y "modelo_clase". Devuelve el valor de la opción actualizada.
- `GET => /opciones/modelos`: devuelve los modelos que pueden relacionarse a cada opción.
**IMPORTANTE**: los parámetros `modelo_clase` y `modelo_id` son opcionales en todos los endpoints.
Ver [guía de configuración](./docs/configuration.md#opciones) para saber cómo añadir opciones.
## Requisitos
- PHP (7.4, 8.0, 8.1 o 8.2)
- Laravel 8.x
## Guía de usuario
- [Instalación](/docs/installation.md)
- [Configuración](/docs/configuration.md)
- [Uso](/docs/uso.md)