50 lines
1.8 KiB
PHP
50 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Product;
|
|
|
|
use Modules\Common\Http\Requests\BaseFormRequest;
|
|
|
|
/**
|
|
* 商品档案 创建/编辑 验证(含多等级价格 prices 数组)
|
|
*/
|
|
class ProductFormRequest extends BaseFormRequest
|
|
{
|
|
protected $stopOnFirstFailure = true;
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'name' => 'required|string|max:100',
|
|
'spec' => 'nullable|string|max:100',
|
|
'grade' => 'nullable|string|max:50',
|
|
'unit' => 'nullable|string|max:20',
|
|
'category_id' => 'required|integer|exists:product_category,id',
|
|
'supplier_id' => 'nullable|integer|exclude_if:supplier_id,0|exists:supplier,id',
|
|
'image' => 'nullable|string|max:255',
|
|
'sort' => 'nullable|integer',
|
|
'status' => 'nullable|integer|in:0,1',
|
|
'remark' => 'nullable|string|max:255',
|
|
'prices' => 'nullable|array',
|
|
'prices.*.level_id' => 'required|integer|exists:customer_level,id',
|
|
'prices.*.price' => 'required|numeric|min:0',
|
|
];
|
|
}
|
|
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'name.required' => '商品名称不能为空',
|
|
'name.max' => '商品名称最长 100 个字符',
|
|
'category_id.required' => '请选择商品分类',
|
|
'category_id.exists' => '商品分类不存在',
|
|
'supplier_id.exists' => '供应商不存在',
|
|
'status.in' => '状态值不正确',
|
|
'prices.*.level_id.required' => '价格行缺少客户等级',
|
|
'prices.*.level_id.exists' => '客户等级不存在',
|
|
'prices.*.price.required' => '价格行缺少单价',
|
|
'prices.*.price.numeric' => '单价必须为数字',
|
|
'prices.*.price.min' => '单价不能小于 0',
|
|
];
|
|
}
|
|
}
|