学习使用Laravel创建MVC应用程序

Laravel应用程序遵循传统的模型 - 视图 - 控制器设计模式,您可以在其中使用:

控制器通过利用模型来处理用户请求和检索数据

模型与您的数据库进行交互和检索对象的信息

用于呈现页面的视图

此外,路由用于将URL映射到指定的控制器操作,如下所示。

所以…

发出请求 - 例如,当用户输入与您的应用程序关联的URL时。

与该URL关联的路由将URL映射到控制器操作。

该控制器操作利用必要的模型从数据库中检索信息,然后将该数据传递给视图。

并且该视图呈现最终页面。

我喜欢说MVC应用程序就像玩乐高积木一样。

使用Laravel 5构建一个是轻而易举的。

构建示例应用程序

为了演示起见,我将带您构建的过程开始的样本Laravel 5应用所有的MVC组件-模型,视图和控制器。

所以,假设您想构建一个处理汽车的应用程序......

该模型我们首先要创建一个模型来代表一辆汽车。

Laravel带有一个出色的内置命令行界面Artisan CLI,它为您提供了许多有用的命令来帮助您构建应用程序。

因此,启动命令行(如果您使用的是Laravel Homestead,则连接到Homestead虚拟机),进入应用程序的主目录,然后运行以下命令生成新的Car模型:

生成新的Car模型

模型都存储在主app目录中,因此该命令将app/Car.php使用以下代码生成模型文件:

成模型文件

由于Laravel的内置模型功能,只需创建一个空的模型类,Laravel将假设此模型与名为的数据库表相关联cars。

实际上,通过--migration在生成模型时提供该选项,Laravel还生成了一个用于创建该数据库表的数据库迁移文件cars。迁移文件位于[timestamp]_create_cars_table.php并包含以下代码:

数据库迁移文件cars

(如果您不熟悉数据库迁移的概念,请阅读有关Laravel如何使用数据库迁移来帮助您直接在应用程序中管理数据库的更多信息。这很棒。)

您现在要做的就是使用Laravel的Schema构建器文档来完成迁移文件。因此,您可以定义一些额外的列,比如存储汽车的品牌,型号和生产日期:

例子

然后,您可以cars使用以下Artisan命令运行迁移以创建表:

Artisan命令运行迁移

通过处理与数据库相关的项目,我们现在可以继续创建控制器。

*注意:为了测试,此时,我只是手动将条目添加到cars数据库表中。

控制器

在Laravel中,一种对象 - 例如Car,在这种情况下 - 被称为资源。

由于围绕资源构建应用程序非常常见,因此您可以使用另一个简单的Artisan命令生成资源控制器 - 一个控制器来处理与资源相关的所有请求:

生成资源控制器

这将生成一个app/Http/Controllers/CarController.php带有以下代码的控制器文件:

请注意,它会自动生成一个包含所有典型CRUD操作的控制器。

现在,我们只需要定义路由以将URL与所有这些控制器操作相关联。

路线

同样,由于这是一种常见的情况,您可以定义单个资源路由,该路由为所有这些资源控制器操作创建路由。

在路径配置文件中 - app/Http/routes.php添加以下内容以定义Car资源路径:

该单一路由定义将定义与我们的Car资源相关的所有路由:

Car资源相关的所有路由

现在,为了举例,让我们完成Show Car页面的实现

财务主任的show行动根据上表,可以访问Show Car页面http://app.url/cars/。在这种情况下,遗嘱实际上是id数据库中的汽车对象。

因此,例如,URL查看车用id的1是http://app.url/cars/1。为了实现Show Car页面,在控制器的show操作中,我们需要:

1、使用该Car模型从数据库中检索指定的Car对象。

2、加载Show Car页面的视图,并将从数据库中检索的Car对象传递给它。

首先,为了访问控制器中的Car模型,我们需要use在控制器类上面添加一个新语句:

use在控制器类添新语句

然后,我们可以show使用以下代码完成操作:

show使用以下代码

当我们访问car 1的URL时 - http://app.url/cars/1- Laravel 1通过函数中的$id变量访问URL show,如上所示。

使用Car模型检索汽车对象就像调用Car::find和传递一样简单$id。

然后使用该view函数加载视图并传递视图的名称(我们将在一分钟内创建)和一个包含要提供给视图的数据的数组。

最后,我们需要创建show视图。

查看和完成页面

Laravel视图文件都存储在该resources/views文件夹中。它们可以组织到该目录中的子文件夹中。

在上一步中,我们传递view了视图名称的功能cars.show。这告诉Laravel要查找位于名为cars(在主resources/views目录中)的子文件夹中的视图文件show.blade.php。

Laravel视图文件使用Blade模板引擎,因此被命名.blade.php。

因此,要完成此Show Car页面的实现,我们可以resources/views/cars/show.blade.php使用以下代码创建视图文件:

show使用以下代码

由于我们将Car对象传递给视图 - 在show控制器的操作中 - 使用数组键car,我们可以通过同名变量在视图中访问它$car。

通过模型检索的对象是该模型类的实例。

而且,正如您所看到的,Car可以使用与其关联的cars数据库表的列名相同的名称来访问对象的值。

最后,您会看到使用Blade语法打印信息。例如,以下内容打印出汽车的品牌:

印出汽车的品牌

该语句echo在后台简单地翻译成纯PHP 语句:

该语句echo纯PHP语句

但是Blade语法使得编写视图更加快速和愉快,并且更容易阅读它们。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190215A1BMZR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券