假设我有一个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表单字段?
3条答案
按热度按时间92vpleto1#
你必须解析你的规则,然后循环解析的数据来构建一个表单,然后,我建议你使用局部视图来完成这个任务。
我已经在构建自动表单和文档时这样做了,所以我在这里写了一个Laravel包:https://github.com/Ifnot/ValidationParser.
在我的包的例子中,你只需要创建两个文件:
qxsslcnc2#
为了让验证规则在一个地方,将规则设置为变量。然后,将变量传递到laravel验证页面和刀片模板(html)中。
因此,在设置变量时:
接下来,将变量传递给Laravel表单验证规则:
然后,将其传递到刀片模板表单中:
然后,在刀片模板中,使用变量:
4dc9hkyq3#
我很难找到其他人思考这个相同的想法。我一定是没有使用正确的搜索条件。我今天实现了这个相同的概念2023在以下项目:https://github.com/arielenter/ValidationRulesToInputAttributes
在这个例子中,我使用laravel的Illuminate\Validation\ValidationRuleParser来分解和解析规则,后来我使用了一个“翻译器”,将适用的规则转换为输入属性。
我担心的是为什么似乎没有人能在2023年完成这项任务。我不确定我是否能胜任这项任务,但是如果没有人做过,我会试试。我只是觉得如果没有更有能力的人做过,那会很奇怪。我认为最困难的部分是为每个可能的属性创建一个扩展字典,这些属性可以根据规则应用。我可能会让用户自己提供字典之类的东西,但有些情况下是有条件的,所以我不确定这是否可行。现在我只会在每次需要的时候添加翻译。