假设我有一些Model
的验证规则,例如人员模型的验证将是:
'first_name' => ['required', 'string'],
'last_name' => ['required', 'string'],
'birthday' => ['before:today', 'date'],
'salary' => ['min:0', 'max:2000', numeric],
....
因此,如果我编写了这些规则,那么手动编写相同的规则会感觉不对,但对于HTML表单字段,例如:
<input type="text" name="first_name" required />
<input type="text" name="last_name" required />
<input type="date" name="birthday" max="2016-06-09"/>
<input type="number" name="salary" min="0" max="2000"/>
因此,如果产品所有者要求我更改规则,例如更改必填字段,甚至将最高工资从2000
更改为5000
,我必须在验证规则中手动更改形式本身。
所以我想知道,是否有任何自动方式将Laravel验证规则转换为HTML表单字段?
答案 0 :(得分:1)
您必须解析规则,然后循环解析数据以构建表单。然后,我建议您使用部分视图来完成这个技巧。
我已经为构建自动表单和文档做了这个。所以我在这里写了一个Laravel包:https://github.com/Ifnot/ValidationParser。
在我的包的示例中,您只需创建两个文件:
答案 1 :(得分:0)
要将验证规则放在一个位置,请将规则设置为变量。然后,将变量传递到laravel验证页面和刀片模板(html)中。
所以,你在哪里设置变量:
$MaxSalary = 2000;
接下来,将您的变量传递给Laravel表单验证规则:
'salary' => ['min:0', "max:$MaxSalary", numeric],
然后,将其传递到您的刀片模板表单中:
return view('form', ['MaxSalary' => $MaxSalary]);
然后,在您的刀片模板中,使用变量:
<input type="number" name="salary" min="0" max="{{ MaxSalary }}"/>