将Laravel验证规则转换为html表单字段

时间:2016-06-09 14:18:58

标签: validation laravel laravel-5 laravel-5.2

假设我有一些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表单字段?

2 个答案:

答案 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 }}"/>