请问有没有把 Laravel 表单验证的逻辑同步到前端的方案?

我觉得Laravel的表单验证很优雅,想着前端验证如果也能用上就完美了,其次是既然在后端写了一份验证逻辑,前端就没必要在写一遍各种require等,直接借用后端里写的,不知道有没有什么组件或者方案能实现?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 13

@lx1036 您没明白我的意思,我的意思不是舍弃掉后端验证转移到前端,而是说借用后端的验证规则,前端就不在用写规则了,这样一套规则,前后端通用(个别特殊的验证规则特殊处理)。但单纯的laravel验证规则肯定前端没法直接用,因此问问有没有相应的package。

7年前 评论
DukeAnn

后端验证 直接提交 如果后端验证失败 laravel 有个 error 返回直接在页面输出 详情参考文档,自动刷新页面时就会显示错误信息了。http://admin.amyair.cn/login 这个前端就没做验证过都是刷新输出的后端 error

7年前 评论

@ADKi 如果做的是一个内网系统,估计这么做还是可以,如果是一个公网互联网项目,有前端验证的话用户体验应该会更好些吧

7年前 评论
DukeAnn

那个是我写的一个demo,如果 前端validate 是提交表单时验证 那就没什么区别,要是移出焦点的话 那就ajax访问后台请求数据(文档里有说明ajax的错误返回),或者使用前端验证插件了

7年前 评论

有个思路,你可以写个接口,每个表单输入框更新的话,将数据和验证规则名称带过去,接口根据规则名称和数据进行校验返回。

因为 laravel 的验证规则是用后端 PHP 写的,如果需要验证,就要到后端进行处理。

7年前 评论

@zhuzhichao
@lx1036
实际上我的思路如下,写一个方法读到已经定义的validation ,然后送到前端,然后在前端实现和后端差不多的验证代码去验证。

7年前 评论

理论上应该是可以的。将你后端定义的规则输出到前端,前端根据规则写校验逻辑

7年前 评论

@s4p3r 大概看了一下,应该就是您说的这个

7年前 评论
lijinma

理论上是可以的。

但是 获取 validation 配置的接口想办法写的优雅,如果是我,我会重写一下 validate 方法。

比如有一个接口:创建资源 POST /resources

['email' => 'test@www.com']

获取这个接口 validate_rules
POST /resources?validate_rules

修改 controller 中的 validate 方法。

    public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
    {
        if ($request->get('validate_rules') {
            return $rules
        }
        parent::validate($request, $rules, $messages, $customAttributes);
    }

可能这是一个非常快的方式解决你的需求,不需要做很多的修改,但是获取 validate_rules 语义上不一定好。

获取这个接口 validate_rules
POST /resources?validate_rules

7年前 评论
lijinma

以上只是思路,你考虑下,上面的代码有点小问题,应该是

        if ($request->has('validate_rules') {
            return $rules
        }
7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!