目录
Laravel 文件目录
参数
可选参数:
使用控制器
创建视图文件
这是文章列表页面
下一节
首页 后端开发 php教程 Laravel 5 系列教程二:路由,视图,控制器工作流程

Laravel 5 系列教程二:路由,视图,控制器工作流程

Jun 20, 2016 pm 12:50 PM

原文来自:https://jellybool.com/post/programming-with-laravel-5-routers-views-controllers-workflow

上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel的神奇世界了,主要是讲解Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的。

在开始之前,我们首先得将我们的服务器启动起来,如果你使用Laravel的artisan,你可以直接:

php artisan serve
登录后复制

然后访localhost:8000,就可以看到Laravel了

我这里还是使用Homestead:

homestead up
登录后复制

homestead 启动之后,我们就可以愉快开始写代码了。

Laravel 文件目录

然后访问我们上一节设置好的域名:blog.dev,也可以看到我们的Laravel。如果你在安装或者使用Homestead的时候遇到任何问题,都可以直接问我。

首先,对于一个新手来接触Laravel的时候,可能你会对Laravel的文件目录感觉到很困惑,因为实在是太多东西了,到底什么是Console,Events,Providers...一大堆东西在这里。

但是不用担心,我们后续的教程会陆续讲解相关的内容。

目前我们关心的是Http/这个文件夹,你可以就简单地记忆为这个文件夹就是用来出来http请求的,比如我们在访问blog.dev的时候,Laravel是怎么将那个可爱的页面响应给我们的?这个就可以在app/Http/routes.php这个文件里面找到,就像上图显示的一样:

Route::get('/', function () {    return view('welcome');});
登录后复制

这是什么意思呢?其实这里你可以这样理解:我们注册这样一个路由,当用户发送一个get请求(简单理解就是在浏览器地址栏中访问)的时候,什么样的get请求呢?也就是什么样的浏览地址呢?恩,就是网站的根目录,也就是当一个用户访问我们站点的根目录的时候,我们应该给用户什么样的响应呢?这里我们就直接执行一个函数function () {},这个函数里面就负责加载一个视图return view('welcome');,这个试图文件位于resources/views/welcome.blade.php,这里的试图文件后缀名blade.php可能会比较疑惑,因为Laravel使用的是blade的模板引擎,如果你接触过其他的模板引擎如Twig,Smarty等,对模板引擎的理解可能会清晰一点。但是如果你在这里还是不太明白,没有关系,我后续会有专门的课程介绍blade模板。现在需要记住的是:Laravel的模板文件就是blade.php结尾的。

你可以直接打开resources/views/welcome.blade.php这个文件来看,里面其实就是一些HTML代码,easy enough。

所以上面的路由注册其实就是负责解决访问blog.dev的时候的响应。那么我们来尝试一个Hello World简单的返回:

Route::get('/', function () {    return 'Hello World';//    return view('welcome');});
登录后复制

回到浏览器,再次访问blog.dev,我们就会看到上面写的Hello World。

参数

试着传入参数,我们重新注册一个路由:

Route::get('/', function () {    return view('welcome');});Route::get('user/{name}', function ($name) {    return 'Hello '.$name;});
登录后复制

上面第二个就是我们自己重新注册的路由,在路由中得变量用大括号{}包裹起来,然后在处理函数中接收这个参数,访问http://blog.dev/user/guys,可以看到下面的返回结果。

上面这个时候,我们如果访问http://blog.dev/user,这是报错的,因为这个路由期望你在后面输入一个变量$name,但是你并没有,所以会报错,我们可以通过可选参数来实现这个目的

可选参数:

Route::get('user/{name?}', function ($name = null) {    return 'Hello '.$name;});
登录后复制

这个时候,再次访问http://blog.dev/user就不会报错了,但是貌似这个时候只返回了Hello,我们也可以设置一个默认值:

Route::get('user/{name?}', function ($name = 'JellyBool') {    return 'Hello '.$name;});
登录后复制

这个时候,如果我们没有输入$name这个变量,我们会返回 Hello JellyBool

使用控制器

上面注册的这些路由是直接使用了匿名函数来返回字符串或加载视图给我们,但是我们的控制器(controller)去哪里了呢?我们怎么使用控制器呢(controllers)?首先我们需要明白,在注册路由是使用控制器在Laravel中大概是这样写的:

Route::get('/','ArticleController@index');
登录后复制

我们将routes.php中原来的注册路由全部删掉,只保留上面这一行代码:这行代码的意思是,当用户请求我们的网站跟目录的时候,我需要找到ArticleController并执行它的index方法,接下来,我们就需要创建我们的ArticleController了:

在命令行中执行:

php artisan make:controller ArticleController
登录后复制

上一篇文章说过artisan这个工具很强大,他可以用来生成我们在开发当中需要的很多东西,给我们的开发带来了很多的便利,如果你花点时间慢慢适应一下,我敢肯定,你以后会爱上Laravel的,会爱上artisan的。这里只是使用了artisan得make:controller命令,其实artisan可以干的事情很多,我们在这个教程中会一一接触到,如果你迫不及待,可以直接看官方文档:

http://laravel.com/docs/5.1/artisan

上面的命令给我们在app/Http/Controllers/目录下生成了ArticleController.php,我们打开它来看看:

在这个文件里面,Laravel帮我们生成了一堆的方法:index(),show(),create()...等,然后我们刚刚在Router(routes.php文件)中注册的路由需要使用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代码:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/html"><head>    <meta charset="UTF-8">    <title>Article lists page</title>    </head><body><h1 id="这是文章列表页面">这是文章列表页面</h1></body></html>
登录后复制

然后访问blog.dev/,我们就可以看到上面的模板内容了:

到这里,不知道你对Laravel的Router,Views,Controllers这三个的工作流程有没有一个清晰的认识,通常我们需要实现某个功能(或者说新创建一个页面)都是这样的:

1. 在routes.php中注册路由 ---> 2. 创建对于的控制器 ---> 3. 在控制器中得对于方法加载视图
登录后复制

对应得实际操作大概是这样的:

1. Route::get('/','ArticleController@index');2. php artisan make:controller ArticleController3. public function index()    {        return view('articles.lists');    }
登录后复制

下一节

关于Laravel的Router,Views,Controllers的工作流程就大概讲到这里,如果你有任何疑问,可以随时在评论里面问我。然后下一节的内容会讲以下的内容:

  • 数据库的配置和Laravel的Migration用法

  • 将变量传给视图文件

  • blade模板的基本用法

    最后:

    Happy Hacking

  • 本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳图形设置
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您听不到任何人,如何修复音频
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解锁Myrise中的所有内容
    4 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    如何在Vue中实现可编辑的表格 如何在Vue中实现可编辑的表格 Nov 08, 2023 pm 12:51 PM

    在许多Web应用程序中,表格是必不可少的一个组件。表格通常具有大量数据,因此表格需要一些特定的功能来提高用户体验。其中一个重要的功能是可编辑性。在本文中,我们将探讨如何使用Vue.js实现可编辑的表格,并提供具体的代码示例。步骤1:准备数据首先,我们需要为表格准备数据。我们可以使用JSON对象来存储表格的数据,并将其存储在Vue实例的data属性中。在本例中

    iOS 17 的待机模式将正在充电的 iPhone 变成家庭集线器 iOS 17 的待机模式将正在充电的 iPhone 变成家庭集线器 Jun 06, 2023 am 08:20 AM

    iOS17中的Apple正在引入待机模式,这是一种新的显示体验,专为水平方向的充电iPhone而设计。处于这个位置的iPhone能够显示一系列全屏小部件,将其变成一个有用的家庭中心。待机模式会在水平放置在充电器上运行iOS17的iPhone上自动激活。您可以查看时间、天气、日历、音乐控制、照片等信息。您可以通过可用的待机选项向左或向右滑动,然后长按或向上/向下滑动以进行自定义。例如,随着时间的流逝,您可以从模拟视图、数字视图、气泡字体和日光视图中进行选择,其中背景颜色会根据时间而变化。有一些选项

    理解SpringBoot和SpringMVC之间的差异及比较 理解SpringBoot和SpringMVC之间的差异及比较 Dec 29, 2023 am 09:20 AM

    对比SpringBoot与SpringMVC,了解它们的差异随着Java开发的不断发展,Spring框架已经成为了许多开发人员和企业的首选。在Spring的生态系统中,SpringBoot和SpringMVC是两个非常重要的组件。虽然它们都是基于Spring框架的,但在功能和使用方式上却有一些区别。本文将重点对比一下SpringBoot与Sprin

    php如何使用CodeIgniter4框架? php如何使用CodeIgniter4框架? May 31, 2023 pm 02:51 PM

    PHP是一种非常流行的编程语言,而CodeIgniter4是一种常用的PHP框架。在开发Web应用程序时,使用框架是非常有帮助的,它可以加速开发过程、提高代码质量、降低维护成本。本文将介绍如何使用CodeIgniter4框架。安装CodeIgniter4框架CodeIgniter4框架可以从官方网站(https://codeigniter.com/)下载。下

    Laravel开发:如何使用Laravel View生成视图? Laravel开发:如何使用Laravel View生成视图? Jun 14, 2023 pm 03:28 PM

    Laravel是目前最流行的PHP框架之一,其强大的视图生成能力是让人印象深刻的一点。视图是Web应用程序中展示给用户的页面或视觉元素,其中包含HTML、CSS和JavaScript等代码。LaravelView允许开发者使用结构化的模板语言来构建网页,同时通过控制器和路由生成相应的视图。在本文中,我们将探讨如何使用LaravelView生成视图。一、什

    Word视图有哪几种 Word视图有哪几种 Mar 19, 2024 pm 06:10 PM

    我猜想,很多同学都想学习word的排版技巧,但小编偷偷告诉大家,在学习排版技巧之前需要先了解清楚word视图,在Word2007中提供了5种视图供用户选择,这5种视图包括页面视图、阅读版式视图、Web版式视图、大纲视图和普通视图,今天和小编了解一下这5种word视图吧。1.页面视图页面视图可以显示Word2007文档的打印结果外观,主要包括页眉、页脚、图形对象、分栏设置、页面边距等元素,是最接近打印结果的页面视图。2.阅读版式视图阅读版式视图以图书的分栏样式显示Word2007文档,Office

    Django框架中的视图详解 Django框架中的视图详解 Jun 17, 2023 am 10:18 AM

    Django是一个高度可定制的Web框架,它提供了许多方便的工具和库,来帮助开发者快速创建高性能的、可扩展的Web应用程序。其中,视图是Django框架中最重要的组成部分之一。视图负责处理来自客户端的请求,并返回相应的响应。在本文中,我们将深入探讨Django框架中的视图,并介绍如何使用它来创建高性能、可定制的Web应用程序。一、视图的基本概念在Django

    微软更新 Visual Studio Code 1.80 微软更新 Visual Studio Code 1.80 Jul 10, 2023 pm 08:13 PM

    微软近日推出了VisualStudioCode1.80,虽然本次更新于7月发布,官方依然将其称之为6月更新。用户安装本次更新之后,内置终端可以直接显示图片,此外还优化了辅助功能。VisualStudioCode此前发布的预览版中,已支持在终端中支持图像,而在新的1.80版本中默认为启用状态。为了能够在终端中可以显示图像,图像像素数据再通过特殊的转义序列转换为文本,最终写入终端。如果要将典型的PNG,GIF或JPEG文件传递到终端,则需要安装imgcatpython软件包,然后在终端中运行imgc

    See all articles