版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP动态网站开发项目教程任务13Laravel中的视图、路由、控制器、验证码子任务13.1Laravel的安装和简单使用13.1.1安装Laravel
Laravel是一个开源的PHPWeb开发框架,它的目的是简化Web应用程序的开发过程。它提供了一系列的工具,可以帮助开发者更快地构建功能强大的Web应用程序。它拥有一个强大的模型-视图-控制器(Model-View-Controller,MVC)架构,可以帮助开发者轻松构建动态Web应用程序。它提供一个强大的路由系统,可以帮助开发者轻松创建RESTfulAPI。此外,它还提供一个强大的数据库迁移系统,可以帮助开发者轻松管理数据库。1.Composer的安装
通过查询,他直接在Composer官网下载安装包,根据安装向导很快就完成了安装。安装完成以后,需要检查是否安装成功。首先进入命令提示符窗口,然后在里面输入“composer”并执行,如果出现图13.1.1所示的内容,则表示安装成功。图13.1.1
检查Composer是否安装成功2.Composer的访问优化
由于Composer的服务器在国外,因此国内访问速度是比较慢的。为了提高访问速度,小王同学先设置了一个Composer的国内镜像,只需要在命令提示符窗口中输入以下代码并执行即可。composer
config
-g
repo.packagist
composer
https://mirrors.aliy**.com/composer/
这条语句的作用是为Composer工具添加配置信息,将Composer的默认packagist地址修改成国内阿里云的镜像地址,这样可加快访问速度。除了使用阿里云镜像以外,还可以使用以下镜像。(1)腾讯云镜像:https://mirrors.cloud.tence**.com/composer/(2)华为云镜像:https://repo.huaweiclo**.com/repository/php/3.开始安装Laravel
接下来需要选择一个空的目录,Laravel将安装在这个目录中。在命令提示符窗口中进入这个目录,输入以下代码并执行。composercreate-project--prefer-distlaravel/laravelmember
这条语句的作用是安装Laravel,其中最后的member就是新安装的项目名称,系统会自动创建一个同名的文件夹。这种安装方式安装的版本是官方提供的默认安装版本,这个默认安装版本可能是最新版本,也可能是最新的最稳定版本,或者是其他版本。
小王同学在E盘中新建一个文件夹laravel_member,然后在资源管理器中打开这个目录,并在地址栏中执行cmd命令,快速进入这个文件夹对应的命令提示符窗口。然后在其中执行上面的默认安装命令,安装过程如图13.1.2所示。待命令执行完毕,小王同学进入E盘的laravel_member目录,就查看到了安装好的member项目。图13.1.2
在命令提示符窗口中安装Laravel4.项目测试
安装完成后,小王同学想要测试项目能否正常打开。通过查询文档,他了解到,Laravel自带了一个内置的Web服务,可以用来启动服务器并访问项目。方法很简单,只需要在命令提示符窗口中进入项目目录(member文件夹),然后输入“phpartisanserve”并执行即可启动服务,如图13.1.3所示。图13.1.3
通过“phpartisanserve”启动Laravel内置的Web服务
接下来,在浏览器中打开:8000,如果看到图13.1.4所示的界面,则表示Laravel安装完成。图13.1.4
安装好Laravel后的默认首页5.Laravel中的artisan
artisan
是Laravel提供的命令行接口(CommandLineInterface,CLI),它提供了非常多实用的命令来帮助我们开发Laravel应用。图13.1.5
查看artisan所有可用的命令13.1.2了解Laravel的MVC
1.什么是MVC
MVC的全称是Model-View-Controller,是Model(模型)、View(视图)、Controller(控制器)的缩写,是一种软件设计典范,用一种将业务逻辑、数据、页面显示分离的方法来组织代码,将业务逻辑聚集到一个部件中,使得在改进和个性化定制页面及用户交互的同时,不需要重新编写业务逻辑。MVC因其独特优势而被不断发展,用于将传统的输入、处理和输出功能映射到一个具有业务逻辑的图形化用户界面的结构中。(1)Model是应用程序中用于处理应用程序数据逻辑的部分,通常负责在数据库中存取数据。(2)View是应用程序中处理数据显示的部分。(3)Controller是应用程序中处理用户交互的部分,主要负责从Model中获取数据,并输出到View中,还能接收View中的用户操作,然后做出相应的响应。Controuer本身不输出任何东西和做任何处理。它只接收请求并决定调用哪个Model构件去处理请求,然后确定用哪个View来显示返回的数据。2.MVC的作用
MVC模式同时提供了对HTML、CSS和JavaScript的完全控制。MVC分层有助于管理复杂的应用程序,这使得我们可以在一段时间内专门关注其中某一个方面(例如,我们可以在不依赖业务逻辑的情况下专注于View设计),同时也让应用程序的测试更加容易。MVC分层同时也简化了分组开发,不同的开发人员可同时开发View、Controller逻辑和业务逻辑,互不干扰。3.MVC模式的结构
图13.1.6所示为MVC模式的结构。从该结构可以看出,整个框架形成了一个闭环,这也符合设计模式的“开放-封闭”原则。图13.1.6
MVC模式的结构13.1.3了解Laravel的几个主要目录
(1)app目录:项目的核心目录,主要用于存放核心代码,包括控制器、模型。(2)bootstrap目录:Laravel的启动目录。(3)config目录:项目的配置目录,主要用于存放配置文件。比如,app.php是项目的主要配置文件,auth.php是用于定义用户认证(登录)的配置文件,database.php是数据库的配置文件,filesystems.php是上传文件和存储文件时需要使用到的配置文件。(4)database目录:数据迁移目录。(5)public目录:项目的入口文件和系统的静态资源目录(css、img、js、uploads等)。后期使用的外部静态文件(JavaScript文件、CSS文件、图片文件等)都需要放到public目录下。(6)resources目录:用于存放视图文件,以及语言包文件的目录。比如,lang目录用于存放语言包(如果项目需要本地化,则需要配置语言包),views目录用于存储视图文件(视图文件也可以分目录管理)。(7)routes目录:定义路由的目录,web.php是用于定义路由的文件。(8)storage目录:存放缓存文件和日志文件的目录。其中的app目录存放用户上传的文件,framework目录存放框架运行时的缓存文件,logs目录存放日志文件。(9)vendor目录:主要用于存放第三方的类库文件,Laravel中有一个重要的思想是共同开发,无须重复造轮子(例如,里面可能存在验证码类、上传类、邮件类等),该目录还可以存放Laravel框架的源代码。通过Composer下载的各种类库也都是存放在该目录下的。(10).env文件:主要用于保存一些系统相关的环境配置文件信息。config目录中的文件配置内容一般都是从.env文件中读取的配置信息。(11)artisan脚手架文件:主要用于自动生成代码,如生成控制器、模型文件等。(12)composer.json文件:依赖包配置文件。子任务13.2Laravel中的视图和路由13.2.1创建视图
Laravel的视图文件位于resources/views目录下。安装好Laravel后,目录中就有一个welcome.blade.php文件。进入系统时,默认显示的就是这个文件的内容(见图13.1.4)。
他打开index.blade.php文件,删除原来的include_once语句(注意:要将PHP标签一并删除),然后添加以下代码。1. @include('nav')
这句话的作用是引用模板,表示引用当前目录下的nav.blade.php文件。在引用模板时,不需要指明被引用文件后面的扩展名,这个扩展名包括“.blade.php”和“.php”。
Blade模板引擎中的
“@include”称为模板引擎指令,其作用是从一个视图中包含另外一个视图。父视图中的所有变量在子视图中都可以使用。子视图可以继承父视图中所有可以使用的数据,并且在引用视图时,还可以传递一个额外的数组,这个数组在子视图中也可以使用。在引用视图时,传递参数的用法如下。1. @include('nav',
['status'
=>
'complete'])
上述代码表示在引用nav视图时,额外传递参数“status”,此参数的值为“complete”。
如果使用
“@include”指令包含的视图不存在,则Laravel将抛出一个错误。为了解决这个问题,可以使用“@includeIf”指令。1. @includeIf('nav',
['status'
=>
'complete'])
这样就可以实现只有存在nav视图时,才执行包含视图的命令。13.2.2创建路由
通过查看文档,小王得知,要想访问Laravel中的视图文件,必须创建相应的路由。所谓路由,简单地说就是将用户的请求转发给相应的程序进行处理,也就是要建立URL和程序之间的映射。常见的请求类型有GET、POST、PUT、PATCH、DELETE等。
要在Laravel中创建路由,需要打开routes目录下的web.php文件来进行设置。打开此文件,可以看到以下内容。1. Route::get('/',
function
()
{
2.
return
view('welcome');
3. });
这段代码的含义是,如果使用GET方式访问根目录(“/”),则返回视图“welcome”,也就是views目录中的welcome.blade.php文件。
现在小王同学已经做好了首页,如果想访问这个首页,则只需要将上述代码简单修改一下,也就是直接返回视图index即可,代码如下。1. Route::get('/',
function
()
{
2.
return
view('index');
3. });
完成这些工作后,小王同学刷新了:8000页面,熟悉的会员管理系统首页立即映入眼帘,如图13.2.1所示。图13.2.1
会员管理系统首页【知识储备】
最基本的Laravel路由接收一个统一资源标识符(UniformResourceIdentifier,URI)和一个闭包,它提供了一种非常简单和有表现力的方法来创建路由和行为,而不需要复杂的路由配置文件。1. use
Illuminate\Support\Facades\Route;
2.
3. Route::get('/',
function
()
{
4.
return
'Hello
World';
5. });
上述路由表示的意思是,当客户端以HTTPGET方式请求“/”时,Laravel会直接返回字符串“HelloWorld”。在创建路由时用到了Laravel中的Route类。在使用一个类时,需要先引用这个类。其中第1行代码用于引用Route类。这里有一个关键字use,其作用是声明使用某个命名空间中的类。这里当然就是指要使用命名空间“Illuminate\Support\Facades\Route”中的Route类。
所谓命名空间,就相当于一个文件夹的路径。命名空间可以将代码划分出不同的空间(区域),每个空间的常量、函数、类的名字互不影响。同一个命名空间下,不能有相同名字的类文件,但同名的类文件可以存在于不同的命名空间。所以,命名空间的作用是解决当前文件内相同作用域内常量名之间、函数名之间、类名之间的命名冲突。
在路由中,可以创建任何用于处理HTTP请求的路由,如以下HTTP请求。1. Route::get($uri,
$callback);
2. Route::post($uri,
$callback);
3. Route::put($uri,
$callback);
4. Route::patch($uri,
$callback);
5. Route::delete($uri,
$callback);
6. Route::options($uri,
$callback);
另外一种常见的路由是视图路由。如果在路由中需要返回一个视图,就可以使用Route::view()方法。此方法提供了一个简单、快捷的方式,即通过额外传递的URI参数,可以直接跳转到相应的视图中。同时,也可以携带额外的参数跳转过去。比如如下的示例。1. Route::view('/welcome',
'welcome');
2.
3. Route::view('/welcome',
'welcome',
['name'
=>
'Taylor']);
路由也可以跳转到控制器中。比如,创建如下路由。1. Route::get('/user',
[UserController::class,
'index']);
上述路由的作用是,当客户端以HTTPGET方式请求“/user”时,Laravel会把请求转发给UsersController类中的index()方法进行处理,然后在index()方法中返回相应的内容给客户端。
Laravel中还有一种典型的路由是重定向路由。如果要创建重定向到另一个URI的路由,则可以使用
Route::redirect()方法,其中第一个参数是需要访问的原始路由,第二个参数是重定向后新的路由。比如,创建如下路由。1. Route::get('/welcome',
function
()
{
2.
return
view('welcome');
3. });
4.
5. Route::redirect('/w','/welcome');
上述代码第1行的路由表示访问“/welcome”,将会返回视图welcome。第5行的路由表示访问“/w”就重定向到“/welcome”,同样将返回视图welcome。子任务13.3Laravel中的控制器和验证码13.3.1制作前端登录页面
控制器的主要作用是处理特定URL转发过来的HTTP请求,然后进行业务逻辑处理,将结果返回给某个特定的对象。Laravel
框架提供了一个命令行接口,可以用来创建控制器。(1)将会员管理系统中的login.php文件复制到resources目录下面的views文件夹中,并命名为login.blade.php。(2)打开login.blade.php文件,重新使用“@include”指令引用nav.blade.php文件。(3)删除文件头部的“session_start()”。(4)在路由文件web.php中创建路由。(5)将会员管理系统中的img目录复制到public目录中,然后修改图片路径,在图片名前面添加“/”即可。或者使用辅助函数asset()。(6)将会员管理系统中的code.php文件复制到views中,并修改名称为code.blade.php。(7)为了显示验证码,还需要添加一个路由。在web.php中添加内容。(8)修改login.blade.php中的验证码图片代码。
这里把<img>标签中的src改成了{{url('/code')}}。双花括号是Blade模板语法,用于显示变量的内容。url()是Laravel中的辅助函数,用于生成URL。此时,再刷新:8000/
login页面,就可以看到正常的登录页面了,如图13.3.2所示。图13.3.1
登录页面中的验证码无法显示
图13.3.2
在登录页面中显示验证码13.3.2制作后端登录页面
后端登录页面的文件也就是用于实现数据库查询、判断用户名和密码是否正确的文件。制作后端登录页面需要用到控制器。(1)进入cmd命令提示符窗口,执行命令“phpartisanmake:
controllerLoginController”创建控制器。
在PhpStorm中,还有一种很方便的方式可以进入命令提示符窗口,那就是直接在左边的Project面板中找到对应的文件夹,选中并单击鼠标右键,在弹出的快捷菜单中选择“OpenIn→Terminal”即可进入命令提示符窗口,并自动定位到当前目录。因此,只需要选中项目根目录并单击鼠标右键,进入命令提示符窗口,再执行上述创建控制器的命令,即可快速完成控制器创建,如图13.3.3所示。图13.3.3
在Terminal窗口中创建控制器
创建好的控制器位于app/Http/Controllers下,名称是LoginController。一般来说,在编程中都要求控制器采用大驼峰式命名法。(2)在控制器中添加一个方法login()。(3)为了实现表单的提交,接下来在web.php中创建路由。
图13.3.4
自动引用类(4)由于表单使用了POST提交方式,为了防止跨站攻击,Laravel要求,凡是使用POST方式提交的数据,都必须在表单中添加一个隐藏的跨站请求伪造(Cross-SiteRequestForgery,CSRF)令牌字段,可以是“{{csrf_field()}}”,也可以是“@csrf”。(5)按照文档要求,修改表单的相关内容。
一般来说,url()用于生成一个完整的网址,asset()用于引入静态文件。第2行添加了一个防止跨站攻击的令牌字段。此时,可以测试登录页面的功能能否正常实现。在登录页面中输入各项数据,单击“提交”按钮,可以在浏览器中输出登录页面中填写的各项数据,如图13.3.5所示。
其中的“_t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创业团队管理与沟通协作手册
- 人力资源管理者招聘指南手册
- 商洽2026年物流运输费用结算方式的商洽函(6篇)
- 信息网络安全管理与维护手册
- 大型商场停电紧急照明保障预案
- 计算机科学与技术专业学生掌握人工智能基础指导书
- 多维度品牌传播策略实施方案
- 大模型基础及应用教材 课件全套1-32 ChatGPT- -社会影响
- 个人健康管理承诺书范例(6篇)
- 东方航空客舱乘务员安全演示标准化服务完全流程指导书
- 《自动墙壁清洗机设计》12000字(论文)
- 志愿服务项目设计与管理
- 企业数字化改造升级项目合同
- 导管异常滑脱应急预案
- 围术期伴发的精神障碍病因介绍
- 友谊主题班会课件
- 八年级数学培优辅差记录表
- 科研诚信教育宣传材料
- 条件概率公开课省公开课金奖全国赛课一等奖微课获奖课件
- 《光伏发电工程预可行性研究报告编制规程》(NB/T32044-2018)中文版
- 推拿手法课件
评论
0/150
提交评论