目錄
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脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    <🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系統,解釋
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
    3 週前 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)

    熱門話題

    Java教學
    1665
    14
    CakePHP 教程
    1423
    52
    Laravel 教程
    1321
    25
    PHP教程
    1269
    29
    C# 教程
    1249
    24
    如何在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上自動啟動。您可以查看時間、天氣、日曆、音樂控制、照片等資訊。您可以透過可用的待機選項向左或向右滑動,然後長按或向上/向下滑動以進行自訂。例如,隨著時間的流逝,您可以從類比視圖、數位視圖、氣泡字體和日光視圖中進行選擇,其中背景顏色會根據時間而變化。有一些選項

    Laravel開發:如何使用Laravel View產生視圖? Laravel開發:如何使用Laravel View產生視圖? Jun 14, 2023 pm 03:28 PM

    Laravel是目前最受歡迎的PHP框架之一,其強大的視圖生成能力是令人印象深刻的一點。視圖是Web應用程式中展示給使用者的頁面或視覺元素,其中包含HTML、CSS和JavaScript等程式碼。 LaravelView允許開發者使用結構化的模板語言來建立網頁,同時透過控制器和路由產生相應的視圖。在本文中,我們將探討如何使用LaravelView產生視圖。一、什

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

    PHP是一種非常流行的程式語言,而CodeIgniter4是一種常用的PHP框架。在開發Web應用程式時,使用框架是非常有幫助的,它可以加速開發過程、提高程式碼品質、降低維護成本。本文將介紹如何使用CodeIgniter4框架。安裝CodeIgniter4框架CodeIgniter4框架可以從官方網站(https://codeigniter.com/)下載。下

    理解SpringBoot和SpringMVC之間的差異及比較 理解SpringBoot和SpringMVC之間的差異及比較 Dec 29, 2023 am 09:20 AM

    對比SpringBoot與SpringMVC,了解它們的差異隨著Java開發的不斷發展,Spring框架已經成為了許多開發人員和企業的首選。在Spring的生態系中,SpringBoot和SpringMVC是兩個非常重要的組件。雖然它們都是基於Spring框架的,但在功能和使用方式上卻有一些區別。本文將聚焦在SpringBoot與Sprin

    Word視圖有哪幾種 Word視圖有哪幾種 Mar 19, 2024 pm 06:10 PM

    我猜想,很多同學都想學習word的排版技巧,但小編偷偷告訴大家,在學習排版技巧之前需要先了解清楚word視圖,在Word2007中提供了5種視圖供用戶選擇,這5種視圖包括頁面視圖、閱讀版視圖、Web版視圖、大綱視圖和普通視圖,今天就和小編了解這5種word視圖吧。 1.頁面視圖頁面視圖可以顯示Word2007文件的列印結果外觀,主要包括頁首、頁尾、圖形物件、分欄設定、頁面邊距等元素,是最接近列印結果的頁面視圖。 2.閱讀版視圖閱讀版視圖以圖書的分欄樣式顯示Word2007文檔,Office

    微軟更新 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

    Django框架中的視圖詳解 Django框架中的視圖詳解 Jun 17, 2023 am 10:18 AM

    Django是一個高度可自訂的網路框架,它提供了許多方便的工具和程式庫,來幫助開發者快速創建高效能的、可擴展的網路應用程式。其中,視圖是Django框架中最重要的組成部分之一。視圖負責處理來自客戶端的請求,並傳回相應的回應。在本文中,我們將深入探討Django框架中的視圖,並介紹如何使用它來創建高效能、可自訂的網路應用程式。一、視圖的基本概念在Django

    See all articles