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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 13

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

2年前
ADKi

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

2年前

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

2年前
ADKi

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

2年前

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

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

2年前

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

2年前

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

2年前

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

2年前
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

2年前
lijinma

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

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

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!