位置: 编程技术 - 正文

使用AngularJS和PHP的Laravel实现单页评论的方法(angularjs和后端交互)

编辑:rootadmin

推荐整理分享使用AngularJS和PHP的Laravel实现单页评论的方法(angularjs和后端交互),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:angular和node.js关系,angular与angular.js有什么区别,angularjs和js的区别,angularjs和后端交互,angularjs和angular,angular和node.js关系,angular与angular.js有什么区别,angularjs和js的区别,内容如对您有帮助,希望把文章链接给更多的朋友!

完整代码: API,Angular作为前端,以创建一个简单的单页的评论应用。

下面是一个简单的例子,展示了如何开始使用这两种技术,所以不用害怕什么额外的数据库性的东西、如何处理子评论什么的。

我们将创建什么

这将是一个简单的单页评论应用程序:

RESTful Laravel API处理获取、创建和删除评论; Angular前端负责显示我们创建的表单和评论; 能够新建评论并把它添加到我们的W/O页面刷新列表; 能够删除评论并把它从W/O页面刷新列表移除。

总体上,这些都是非常简单的概念。我们重点是关注Laravel与Angular如何一起协作的错综复杂关系。

Laravel后端设置Laravel

继续设置好你的Laravel,我们将做一些基础工作使我们的后端实现评论的增删改查:

创建一个数据库迁移 将样本评论植入数据库 为我们的API创建路由表 创建一个“全部获取”路由表让Angular出来路由 为评论创建一个资源控制器

准备数据库迁移

我们要一个简单的、存储评论的结构体,只需要包括内容和作者。让我们创建Laravel迁移来创建评论。

我们来运行artisan命令创建评论迁移,这样就可以在我们的数据库里建立评论表:

我们将使用Laravel模式构建器创建所需的“内容”和“作者”域。Laravel也会创建id和timestamps列,这样我们可以知道这条评论是什么时候添加的。以下是评论表的代码:

确定你在“app/config/database.php”文件中用正确的凭证调整了数据库设置。现在我们运行迁移,这样就能用所需的列创建这张表:

评论模型

我们将用Laravel Eloquent模型与数据库进行交互。这很容易做到,让我们来创建一个模型:“app/models/Comment.php”:

现在有了表和模型,让我们通过Laravel Seeding向表中添加一个样本数据。播种数据库

我们需要一些评论来测试几件事。让我们创建一个种子文件并插入三个样本评论到数据库。

创建一个文件:“app/database/seeds/CommentTableSeeder.php”,并添加以下代码:

要调用这个播种机文件,我们要修改“app/database/seeds/DatabaseSeeder.php”并添加以下代码:

现在我们通过artisan命令来运行我们的播种机。

现在我们拥有一个包含评论表的数据库、一个Eloquent模型和一些数据库样本。一天的工作还不算糟。。。但我们还远没有结束。

评论资源控制器(app/controllers/CommentController.php)

我们将使用Laravel资源控制器处理评论的API函数。因为使用Angular显示一个资源以及创建和更新表单,在没有创建和编辑函数的情况下,我们将通过artisan命令创建一个资源控制器。

让我们用artisan创建资源控制器。

对于示例应用,我们只会在资源控制器中使用这三个函数。为了扩展,你要包含所有的诸如更新、显示等函数,来实现一个更成熟的应用。

我们已经创建了控制器,就不需要创建和编辑函数啦,因为Angular,而不是Laravel会处理显示表单的工作。Laravel只负责把数据返回给前端。只为了想让事情简单化,我们也从实例应用提出了更新函数。我们将处理创建、显示和删除评论。

要回传数据,我们想以JSON形式返回数据。我们来浏览一下新建的控制器并添加相应的函数。

你可以看到用Laravel和Eloquent处理增删改查多么容易。处理我们所需的函数简直难以置信的简单。

随着控制器的准备完成,我们后端最后要做的一件事就是路由。

我们的路由表(app/routes.php)

随着数据库的准备就绪,我们来处理Laravel应用的路由表吧。既然它有自己的路由,我们将会用到路由表发送数据给前端。我们也要给后台API提供路由表,从而可以让人访问我们的评论数据。

让我们创建Angular指向路由表。我们需要一个主页路由表和一个发送用户给Angular的“全部获取”路由表。这保证了用户无论怎样都能访问我们的网站,它们会被路由到Angular前端。

我们将以...(请击鼓)...api作为API路由表前缀。通过这种方式,如果有人想获取所有的评论,他们将使用URL: 。这只是有意义的前进和一些基础API创建的好策略。

我们现在有路由表来处理Laravel要做的三件主要事情。

处理“全部获取”路由表:在Laravel里,你可以用几种方式实现这个。通常,用以上代码并得到整个应用的“全部获取”不太理想。另一种选择是,你可以使用Laravel控制器的丢失方法来获取路由表。

测试所有的路由表 让我们确保所需的路由表都有了。我们会用到artisan查看所有的路由表:

使用AngularJS和PHP的Laravel实现单页评论的方法(angularjs和后端交互)

这个命令让我们看到所有的路由表以及一个自上而下的应用视图。

从上图我们能看到HTTP动词和获取所有评论,获取、创建和销毁一条评论的路由表。在API路由表的顶部,可以看到一个用户如何通过主页路由表路由到Angular的。

后台完成

终于!我们Laravel API的后台也完成了。我们已经做了很多,但还有很多工作要做。我们已经建立并播种了数据库,创建了模型和控制器,也建好了路由表。我们来继续完成Angular前端的工作。

将Angular文件放在哪

我看到这个问题很多次被问到了。我到底应该把Angular文件放在哪呢,还有如何使Laravel和Angular一起工作。让Angular来处理前端,我们需要Laravel将用户导向到index.php文件。我们可以把它放在几个不同的地方。默认情况下,当你使用:

这将返回app/views/index.php。Laravel默认情况下将在app/views文件夹查找。

一些人想要将Angular文件和Laravel 文件完全分开。他们想要让他们的整个应用程序放在public文件夹中。这样做很简单:只需要将默认的View的位置设置为public文件夹即可。可以通过修改app/config/view.php文件来完成设置。

现在,return View::make('index') 将会查找public/views/index.php文件。你完全可以配置你想如何组织你的app。一些人认为将整个Angular应用程序放在public文件夹中好处比较多,这样可以很容易的处理路由并且如果将来有需要的话,可以完全的将后端的RESTful API 和前端的Angular区分开来。

为了Angular能进行路由,那么你的部分文件需被放置在public 文件夹中,但是这已经超出了本文的范围。

让我们假设所有东西都使用默认,并且我们的主视图文件是在我们的app/ views 文件夹下,然后我们继续。

使用Laravel和Angular 路由 如果使用Laravel和Angular 路由时冲突了,会导致很多的问题。Laravel将作为主路由掌控你的应用程序。Angular 路由只会发生在, 当Laravel路由我们的用户, 到Angular主路由(index.php)这种情况。 这就是为什么我们使用Laravel掌控所有的路由。Laravel将处理API路由和将任意不知如何路由的请求发送到Angular。然后,你可以为你的Angular 应用设置所有的路由来处理出不同的视图。

前端的Angular准备我们的应用程序

我们的Angular程序中的每一件事都要在public文件夹中处理。这可以有助于我们将它和后端的app文件夹中的文件很好的区分开来。

让我们看一下我们的public文件夹中的组织结构。我们创建了模块化的Angular程序,因为这是最佳实践。现在,我们程序分成的各个部分很容易进行测试和处理。

- public/ ----- js/ ---------- controllers/ // where we will put our angular controllers --------------- mainCtrl.js ---------- services/ // angular services --------------- commentService.js ---------- app.js

Angular Service public/js/services/commentService.js

我们的Angular service是我们通过HTTP调用Laravel API 的一个主要的位置。它非常的简明易懂,我们使用了 Angular $http service.

这就是我们的Angular service,包含了3个不同的函数。这些是我们唯一所需要的函数,因为它们将会和我们Laravel中的路由api相对应。

我们的service将会返回一个promise对象。这些将会用来处理我们的控制器。这里的命名约定同样也和我们的Laravel控制器保持一致。

完成了我们的Angular service,让我们开始着手我们的控制器并使用它。 Angular控制器public/js/controllers/mainCtrl.js

该控制器实现了我们应用的绝大部分功能。我们在这里面创建处理提交表单和删除评论的函数。

正如你在控制器中看到的,我们已经注入了Comment服务并使用它来实现主要的功能:获得,保存以及删除。使用这样的服务避免用$http get或put来污染我们的控制器。

连接到我们的应用public/js/app.js

在Angular方面,我们已经创建了服务和控制器。现在让我们将一起连接起来,这样我们可以使用ng-app和ng-controller将它应用到我们的应用中。

这就是创建Angular应用的代码。我们将把服务和控制器注入。这是最佳实践的做法,这能够使我们的应用程序模块化,且各个不同部分都是可测可扩展的。

就这样,没有太多工作。现在我们切实实现了我们的观点,我们可以看Angular的各部分是如何一起工作的。

我们的主视图app/views/index.php

到目前为止,在做完一切准备工作后,我们仍然不能从浏览器中看到任何内容。因为Laravel控制着我们的主路由,我们需要定义我们的视图文件,且将所有路由请求返回return View::make('index');。

让我们先创建视图。我们将使用我们已创建的所有Angular内容。我们已已使用Angular创建的主要部分将是我们将在index.php中主要使用的部件:

ng-app和ng-controller:通过将它们附加到body标签上来应用它们 ng-repeat:通过循环将评论显示到模板中 submitComment():使用ng-submit将这个函数附加到表单上 Loading Icons:我们将创建一个称作loading的变量。如果它被设为true,我们将显示一个加载图标并隐藏评论 deleteComment():我们将附加这个函数到一个删除链接,以便我们删除评论

现在让我们来写实现我们观点的实际代码。我们将对主要重要的部分做注释,这样我们就能够看到一切是如何正常工作的。

现在我们终于实现了我们的观点,将所有已创造的部分组合了起来。你可以去试玩一下这个应用。所有部件都应很好地结合在一起,评论的创建和删除也应该不用刷新页面。

测试

确保你测试了 Github repo 的应用.下面是做好这一过程的步骤

复制 repo:git clone git@github.com:scotch-io/laravel-angular-comment-app 安装Laravel:composer install --prefer-dist 修改数据库连接 inapp/config/database.php 数据迁移 database:php artisan migrate 打好种子 database:php artisan db:seed 浏览你的应用!

结论

以往本文在介绍使用 Laravel 和Angular上为你提供了帮助. 你可以在此基础上创建使用更多API的 Laravel 应用, 甚至创建自己的 Angular routing .

测试IE浏览器对JavaScript的AngularJS的兼容性 短版本为确保Angular应用在IE上能够工作请确认:1.在IE7或更早的版本上polyfillJSON.stringify。你可以使用JSON2或JSON3来polyfills。!doctypehtmlhtmlxmlns:ng="

使用AngularJS实现表单向导的方法 今天我们将使用AngularJs和伟大的UIRouter以及AngularngAnimatemodule创建一个带动画的多步表单。这项技术可以用在你想要简化用户操作的大表单上。我们看到

举例详解AngularJS中ngShow和ngHide的使用方法 今天我们来看看怎样使用Angular的ngShow和ngHide指令来完成它们听起来应该完成的,显示和隐藏!它们应该做的事ngShow和ngHide允许我们显示或隐藏不同的元

标签: angularjs和后端交互

本文链接地址:https://www.jiuchutong.com/biancheng/380441.html 转载请保留说明!

上一篇:使用AngularJS处理单选框和复选框的简单方法(angularjs1.5)

下一篇:测试IE浏览器对JavaScript的AngularJS的兼容性(浏览器app测试要点)

  • 计提并结转所得税费用的会计分录
  • 其他应付款贷方负数怎么调整
  • 城镇土地使用税减免税政策
  • 汽车装饰属于什么服务
  • 中小企业存货内部控制存在的问题以公司为例
  • 事业单位退休职业年金发放多少个月
  • 转让土地使用权会计分录怎么做
  • 未分配利润如何使用投入生产
  • 向银行借款一年是长期还是短期
  • 财务软件服务费属于什么费用
  • 图书发票没有明细能报销吗?
  • 零售超豪华小汽车交消费税吗
  • 城市生活垃圾处理与资源化利用工艺设计
  • 公办幼儿园食堂21项制度
  • 已付款收货未收到发票会计分录
  • 出租设备的折旧计入哪个科目
  • 个体户生产所得税怎么计算
  • 会计分录如何试算出来的
  • wifi密码怎么改手机里面
  • 部门预算编制方法
  • 抵押物转让的法律规定
  • 打样费入什么科目
  • 没有发票申报纳税怎么办
  • 支付服务器年租什么意思
  • 以前年度损益调整借贷方向
  • 公司员工生病看望的红包能入公司账吗
  • 盈余公积转增资本会计科目
  • 房产税具体内容
  • 企业新增股东投标流程
  • 深度学习实战——不同方式的模型部署(CNN、Yolo)
  • php框架零基础入门
  • jquery制作轮播切换效果
  • nodemon卸载
  • 账面价值大于计税基础为啥为递延所得税负债
  • 其他综合收益的借贷方向
  • 劳务费发票差额征税
  • Laravel 5.1 on SAE环境开发教程【附项目demo源码】
  • 坏账的资产减值损失可以税前扣除吗
  • phpcms开发手册
  • bootstrapstandby
  • 个体户营业额一般填多少
  • 办公用品普通发票税点多少
  • 企业宣传视频制作方案
  • 车辆购置税可以网上缴纳吗
  • 营改增后企业所得税是国税还是地税
  • 哪些企业不能核算成本
  • linux登录root用户登录
  • mysql错误日志在哪里
  • 贷款计入什么科目
  • 投资者向企业投入资本的形式
  • 管理费用借方贷方
  • 跨月发票红冲怎么做账务处理
  • 自产的产品用于生产缴纳增值税
  • 加油费不征税发票怎么开
  • 职工教育经费中的职工培训费用可以全额扣除吗
  • 国有资产无偿划转税收政策
  • 手机属于固定资产吗
  • 一般纳税人原材料的入账价值怎么算
  • 会计账簿的作用主要包括
  • 银行存款日记账电子表格模板
  • windows怎么管理员权限
  • win8怎么添加我的电脑到桌面
  • centos 拷贝
  • freebsd软件包存储库
  • 安装操作系统win10
  • ubuntu 系统卡住
  • win10 rs1是什么版本
  • ubuntu安装chia
  • win8系统摄像头在哪里打开
  • perl中的$1
  • javascript ()
  • sae定义及如何上报
  • vscode 远程调试jni
  • js实现浏览器状态栏显示
  • python教程目录
  • 广东税务app下载安装
  • 应交增值税减免税款借贷方向
  • 经营碎石的税点多少
  • 放管服中的服的深层含义
  • 申报地税的流程图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设