laragrad / eloquent-model-validation
v1.0
2020-06-02 20:16 UTC
Requires
- php: ^7.2.0
This package is auto-updated.
Last update: 2024-09-29 05:47:37 UTC
README
此包提供了一个特质 \Laragrad\Models\Concerns\HasValidation 用于模型验证。
安装
在控制台中运行命令
composer require laragrad/eloquent-model-validation
使用验证
修改您的模型
将以下代码添加到您的模型中
- 使用特质
\Laragrad\Models\Concerns\HasValidation声明 - 验证规则
class Test extends Model { use \Laragrad\Models\Concerns\UseValidation; protected $rules => [ 'title' => ['string', 'max:150'], 'value' => ['integer', 'min:0', 'max:50'], 'description' => ['string', 'nullable'], ]; ... }
控制器 add() 方法示例
use App\Models\Test; class TestController extends Controller { public function add(Request $request) { $model = \App::make(Test) ->tempFillable([ 'title', 'value', 'description', ]) ->fill($request->all()) ->validate() ->save(); } }
使用了以下由 \Laragrad\Models\Concerns\HasValidation 特质提供的方法
tempFillable()validate()
HasValidation 特质方法
validate()
语法
validate(array $data = [], array $rules = [], array $messages = [], array $customAttributes = []) : Model
参数
- $data - 验证数据。默认为模型属性值;
- $rules - 验证规则。默认使用模型的 $rules 属性;
- $messages - 自定义错误消息;
- $customAttributes - 用于生成验证错误消息的自定义属性名。
返回一个模型。
关于 $customAttributes 参数的说明。
您可以通过以下三种方式定义 $customAttribute
- 定义模型的一个
$attributeNames属性。 - 在路径
/resources/lang/xx/model/{YourModelPath}.attributes中的 lang 文件中定义翻译后的属性名。例如,对于模型App\Models\ContractType的 lang 文件是/resources/lang/xx/model/app/models/contract_type - 在
validation()调用中定义$customAttributes参数。
tempFillable()
语法
tempFillable(array $fields) : Model
参数
- $fields - 可以通过
fill()填充的字段列表,直到下一次调用save()。
返回一个模型。