多语言展示
当前在线:180今日阅读:126今日分享:42

Laravel 路由,视图,控制器工作流程介绍

本经验介绍Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的。
工具/原料
1

Homestead

2

laravel

路由
1

路由新手会对Laravel的文件目录感觉到很困惑,到底什么是Console,Events,Providers...一大堆东西在这里。我们关心的是Http/这个文件夹,你可以就简单地记忆为这个文件夹就是用来出来http请求的,比如我们在访问laravel的时候,Laravel就可以在app/Http/routes.php这个文件里面找到,如图所示:Route::get('/', function () {    return view('welcome');});我们注册这样一个路由,当一个用户访问我们站点的根目录的时候,我们就直接执行一个函数function () {},这个函数里面就负责加载一个视图return view('welcome');,这个试图文件位于resources/views/welcome.blade.php, 这里的视图文件后缀名blade.php可,因为Laravel使用的是blade的模板引擎,需 要记住的是:Laravel的模板文件就是blade.php结尾的。你可以直接打开resources/views/welcome.blade.php这个文件来看,里面其实就是一些HTML代码。上面的路由注册其实就是负责解决访问laravel.app的时候的响应。我们来尝试一个Hello Laravel简单的返回:Route::get('/', function () {    echo 'Hello Laravel';});回到浏览器,再次访问laravel.app,我们就会看到上面写的Hello Laravel。

2

参数试着传入参数,我们重新注册一个路由:Route::get('user/{name}', function ($name) {    return 'Hello '.$name;});上面就是我们自己重新注册的路由,在路由中得变量用大括号{}包裹起来,然后在处理函数中接收这个参数,访问http://laravel.app/user/shapolang,可以看到下面的返回结果。上面这个时候,我们如果访问http://laravel.app/user,这是报错的,因为这个路由期望你在后面输入一个变量$name,但是你并没有,所以会报错,我们可以通过可选参数来实现这个目的

3

可选参数:Route::get('user/{name?}', function ($name = 'shapolang') {    return 'Hello '.$name;});将代码修改之后,再次访问http://laravel.app/user就不会报错了,这个时候我们没有填写name参数,会使用默认值,我们会返回 Hello shapolang

控制器

Laravel中注册路由时使用控制器在如下:Route::get('/','ArticleController@index');我们将routes.php中原来的注册路由全部删掉,只保留上面这一行代码:这行代码的意思是,当用户请求我们的网站跟目录的时候,我需要找到ArticleController并执行它的index方法,接下来,我们就需要创建我们的ArticleController了:在命令行中执行:php artisan make:controller ArticleController这里只是使用了artisan得make:controller命令,其实artisan可以干的事情很多;上面的命令给我们在app/Http/Controllers/目录下生成了ArticleController.php,我们打开它来看看:在这个文件里面,Laravel帮我们生成了一堆的方法:index(),show(),create()...等,然后我们刚刚在Router(routes.php文件)中注册的路由需要使用ArticleController的index方法

创建视图文件

使用ArticleController的index方法,我们就在index()方法里面加载一个视图:    public function index()    {        return view('articles.lists');    }这个视图文件应该是位于resources/views/articles/lists.blade.php,但是在views文件夹当中,我们并没有articles/这个文件夹和lists.blade.php,所以我们需要手动创建之。这里需要注意的是,Laravel的view()方法会默认从views文件夹查找视图文件,所以你不用在view()方法中加入resources/views这个路径,而且你也不用将blade.php写上,Laravel会自动处理这些事情,至于views()方法articles.lists中得.就使用了路径别名,你也可以使用/来写成这样articles/lists创建好之后,在articles/lists.blade.php写入简单地HTML代码然后访问laravel.app/,我们就可以看到上面的模板内容了:

总结

Laravel的Router,Views,Controllers这三个的工作流程通常我们需要实现某个功能(或者说新创建一个页面)都是这样的:1. 在routes.php中注册路由 ---> 2. 创建对于的控制器 ---> 3. 在控制器中得对于方法加载视图对应得实际操作如图:

注意事项

对于不明白的地方要学会看框架源码

推荐信息