laravel5.4框架中vue.js实现Ajax的表单提交错误验证

发布时间 - 2018-07-31 00:00:00    点击率:

本篇文章给大家分享的内容是关于laravel5.4框架中vue.js实现ajax的表单提交错误验证,有一定的参考价值,希望可以帮助到有需要的朋友。

开始之前首先准备好开发环境,我们假设你已经安装好 Laravel,至于 Vue 的引入,请参考官方文档。

做好上述准备工作后就可以开始我们的开发了,本教程中我们将演示文章发布页面的表单验证。

首先在 routes/web.php 中新增两条路由规则:

Route::get('post/create', 'PostController@create');
Route::post('post/save', 'PostController@save');

然后在项目根目录下运行 Artisan 命令创建控制器 PostController:

php artisan make:controller PostController

在生成的控制器中新增两个方法用于处理路由请求:

public function create() {
    return view('post.create');
}
public function save(Request $request) {
    // 设置验证规则
    $this->validate($request, [
         'title' => 'required',
         'body'  => 'required'
     ]);
}

接下来就要创建响应视图了,为了复用已有的样式风格和页面布局,我们先运行如下 Artisan 命令:

php artisan make:auth

这样我们就可以复用 Laravel 自带的认证功能页面布局了,创建视图文件 post/create.blade.php,并编辑文件内容如下:

@extends('layouts.app')
@section('content')
    
        
        
            创建成功!
        
        
        
创建文章 @{{errors.title.join(',')}} @{{errors.body.join(',')}}
@endsection

这时访问页面页面为空,因为我们还没有定义 Vue 相关的数据变量,layouts.app 布局视图里引用了 app.js,而这个 js 由 resources/assets/js/app.js 编译而来,所以我们准备在这里定义 Vue 相关的代码:

var app = new Vue({
    el: '#app',
    data: {
        post: {
            title: '',
            body: ''
        },
        errors: [],
        submitted: false
    },
    methods: {
        createPost: function () {
            var self = this;
            axios.post('/post/save', self.post).then(function(response) {
                // form submission successful, reset post data and set submitted to true
                self.post = {
                    title: '',
                    body: '',
                };
                // clear previous form errors
                self.errors = '';
                self.submitted = true;
            }).catch(function (error) {
                // form submission failed, pass form  errors to errors array
                self.errors = error.response.data;
            });
        }
    }
});

我们在视图文件里还看到了 form-error,这其实是 Vue 里面的子组件,我们可以在 resources/assets/js/components 目录下创建这个新的组件文件,该目录下提供了一个样例 Example.vue,我们可以参照该样例编写一个新的 FormError.vue:


这里我们将父组件中的数据 errors 传递到了子组件中以便在子组件中显示错误信息。完成创建子组件后不要忘了在上述 resources/assets/js/app.js 中引入它:

Vue.component('form-error', require('./components/FormError.vue'));

这样,我们就完成了所有编码工作,接下来运行以下命令重新编译js:

npm run dev

当然在开发环境中,我们更倾向于使用 npm run watch,该命令会监听前端资源文件的更改然后重新编译,以避免每次修改后手动编译。

这样,在浏览器中访问 post/create 页面,就可以正常展示了:

什么都不填写,点击创建按钮,页面就能展示错误提示信息了:

填写相应字段之后再提交,则提示创建成功。

这样,我们在 Laravel 中完成了简单的,基于 Vue 实现的 Ajax 表单提交验证功能,个人感觉在提升开发效率方面还是很显著的

相关推荐:

laravel的新特性之高阶消息传递

Laravel 5.1框架中的ACL用户授权和权限检查功能的实现


# php  # laravel  # ajax  # vue.js  # npm  # 表单验证  # Error  # JS  # 表单  # 错误信息  # 就可以  # 我们可以  # 复用  # 器中  # 完成了  # 样例  # 在这里  # 还没有 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在建站之星绑定自定义域名?  如何在阿里云虚拟服务器快速搭建网站?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  移动端脚本框架Hammer.js  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  大同网页,大同瑞慈医院官网?  Laravel如何实现文件上传和存储?(本地与S3配置)  如何在宝塔面板中创建新站点?  如何在Ubuntu系统下快速搭建WordPress个人网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  香港服务器部署网站为何提示未备案?  如何快速搭建自助建站会员专属系统?  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel如何创建自定义Artisan命令?(代码示例)  如何用景安虚拟主机手机版绑定域名建站?  如何在云主机快速搭建网站站点?  如何用腾讯建站主机快速创建免费网站?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  JS经典正则表达式笔试题汇总  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  如何用AI帮你把自己的生活经历写成一个有趣的故事?  使用C语言编写圣诞表白程序  PHP 500报错的快速解决方法  如何正确选择百度移动适配建站域名?  Laravel如何实现多对多模型关联?(Eloquent教程)  EditPlus 正则表达式 实战(3)  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何快速启动建站代理加盟业务?  JS碰撞运动实现方法详解  做企业网站制作流程,企业网站制作基本流程有哪些?  微信公众帐号开发教程之图文消息全攻略  如何在Tomcat中配置并部署网站项目?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  太平洋网站制作公司,网络用语太平洋是什么意思?