목차
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 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    인기 기사

    R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 최고의 그래픽 설정
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    Vue에서 편집 가능한 테이블을 구현하는 방법 Vue에서 편집 가능한 테이블을 구현하는 방법 Nov 08, 2023 pm 12:51 PM

    테이블은 많은 웹 애플리케이션에서 필수적인 구성 요소입니다. 테이블에는 일반적으로 많은 양의 데이터가 있으므로 사용자 경험을 개선하려면 테이블에 몇 가지 특정 기능이 필요합니다. 중요한 기능 중 하나는 편집 가능성입니다. 이 기사에서는 Vue.js를 사용하여 편집 가능한 테이블을 구현하는 방법을 살펴보고 구체적인 코드 예제를 제공합니다. 1단계: 데이터 준비 먼저 테이블에 사용할 데이터를 준비해야 합니다. JSON 객체를 사용하여 테이블의 데이터를 저장하고 Vue 인스턴스의 data 속성에 저장할 수 있습니다. 이 경우

    iOS 17의 대기 모드는 충전 중인 iPhone을 홈 허브로 바꿔줍니다. iOS 17의 대기 모드는 충전 중인 iPhone을 홈 허브로 바꿔줍니다. Jun 06, 2023 am 08:20 AM

    iOS 17에서 Apple은 iPhone을 가로 방향으로 충전하도록 설계된 새로운 디스플레이 환경인 대기 모드를 선보입니다. 이 위치에서 iPhone은 일련의 전체 화면 위젯을 표시하여 유용한 홈 허브로 전환할 수 있습니다. 대기 모드는 iOS 17을 실행하는 iPhone을 충전기에 수평으로 올려놓으면 자동으로 활성화됩니다. 시간, 날씨, 달력, 음악 컨트롤, 사진 등을 볼 수 있습니다. 사용 가능한 대기 옵션을 왼쪽이나 오른쪽으로 스와이프한 다음 길게 누르거나 위/아래로 스와이프하여 사용자 정의할 수 있습니다. 예를 들어 아날로그 보기, 디지털 보기, 버블폰트, 일광 보기 중에서 선택할 수 있는데, 시간이 지남에 따라 배경색이 변합니다. 몇 가지 옵션이 있습니다.

    SpringBoot와 SpringMVC의 차이점과 비교 이해 SpringBoot와 SpringMVC의 차이점과 비교 이해 Dec 29, 2023 am 09:20 AM

    SpringBoot와 SpringMVC를 비교하고 차이점을 이해하십시오. Java 개발의 지속적인 개발로 인해 Spring 프레임워크는 많은 개발자와 기업에서 첫 번째 선택이 되었습니다. Spring 생태계에서 SpringBoot와 SpringMVC는 매우 중요한 두 가지 구성 요소입니다. 둘 다 Spring 프레임워크를 기반으로 하지만 기능과 사용법에 약간의 차이가 있습니다. 이 기사에서는 SpringBoot와 Spring을 비교하는 데 중점을 둘 것입니다.

    PHP에서 CodeIgniter4 프레임워크를 사용하는 방법은 무엇입니까? PHP에서 CodeIgniter4 프레임워크를 사용하는 방법은 무엇입니까? May 31, 2023 pm 02:51 PM

    PHP는 매우 널리 사용되는 프로그래밍 언어이며 CodeIgniter4는 일반적으로 사용되는 PHP 프레임워크입니다. 웹 애플리케이션을 개발할 때 프레임워크를 사용하면 개발 프로세스 속도를 높이고 코드 품질을 향상시키며 유지 관리 비용을 줄일 수 있습니다. 이 기사에서는 CodeIgniter4 프레임워크를 사용하는 방법을 소개합니다. CodeIgniter4 프레임워크 설치 CodeIgniter4 프레임워크는 공식 홈페이지(https://codeigniter.com/)에서 다운로드할 수 있습니다. 아래에

    Laravel 개발: Laravel View를 사용하여 뷰를 생성하는 방법은 무엇입니까? Laravel 개발: Laravel View를 사용하여 뷰를 생성하는 방법은 무엇입니까? Jun 14, 2023 pm 03:28 PM

    Laravel은 현재 가장 인기 있는 PHP 프레임워크 중 하나이며 강력한 뷰 생성 기능이 인상적입니다. 보기는 웹 애플리케이션에서 사용자에게 표시되는 페이지 또는 시각적 요소로, HTML, CSS, JavaScript와 같은 코드가 포함되어 있습니다. LaravelView를 사용하면 개발자는 구조화된 템플릿 언어를 사용하여 웹 페이지를 구축하고 컨트롤러 및 라우팅을 통해 해당 뷰를 생성할 수 있습니다. 이번 글에서는 LaravelView를 사용하여 뷰를 생성하는 방법을 살펴보겠습니다. 1. 무엇

    Word의 보기는 무엇입니까? Word의 보기는 무엇입니까? Mar 19, 2024 pm 06:10 PM

    많은 학생들이 단어 조판 기술을 배우고 싶어하는 것 같은데, 편집자는 조판 기술을 배우기 전에 단어 보기를 명확하게 이해해야 한다고 비밀리에 말합니다. Word2007에서는 사용자가 선택할 수 있는 5가지 보기가 제공됩니다. 보기, 읽기 레이아웃 보기, 웹 레이아웃 보기, 개요 보기, 일반 보기 오늘은 이 5가지 단어 보기에 대해 알아보겠습니다. 1. 페이지 보기 페이지 보기는 주로 머리글, 바닥글, 그래픽 개체, 열 설정, 페이지 여백 및 기타 요소를 포함하는 Word2007 문서의 인쇄 결과 모양을 표시할 수 있습니다. 인쇄 결과에 가장 가까운 페이지 보기입니다. 2. 읽기 레이아웃 보기 읽기 레이아웃 보기에는 Word2007 문서와 Office가 책의 열 스타일로 표시됩니다.

    Django 프레임워크의 뷰에 대한 자세한 설명 Django 프레임워크의 뷰에 대한 자세한 설명 Jun 17, 2023 am 10:18 AM

    Django는 개발자가 확장 가능한 고성능 웹 애플리케이션을 빠르게 만들 수 있도록 다양한 편리한 도구와 라이브러리를 제공하는 고도로 사용자 정의 가능한 웹 프레임워크입니다. 그 중 뷰는 Django 프레임워크의 가장 중요한 구성 요소 중 하나입니다. 뷰는 클라이언트의 요청을 처리하고 해당 응답을 반환하는 역할을 담당합니다. 이 기사에서는 Django 프레임워크의 뷰에 대해 자세히 알아보고 이를 사용하여 고성능의 사용자 정의 가능한 웹 애플리케이션을 만드는 방법을 설명합니다. 1. Django 뷰의 기본 개념

    Microsoft는 Visual Studio Code 1.80을 업데이트합니다. Microsoft는 Visual Studio Code 1.80을 업데이트합니다. Jul 10, 2023 pm 08:13 PM

    Microsoft는 최근 Visual Studio Code 1.80을 출시했습니다. 이 업데이트는 7월에 출시되었지만 공식에서는 여전히 6월 업데이트라고 부릅니다. 사용자가 이 업데이트를 설치하면 내장 터미널에 이미지가 직접 표시될 수 있으며 보조 기능도 최적화됩니다. 이전에 출시된 Visual Studio Code 미리 보기 버전에서는 터미널의 이미지 지원이 지원되었으며 새 1.80 버전에서는 기본적으로 활성화됩니다. 터미널에서 이미지를 표시할 수 있도록 이미지 픽셀 데이터는 특수 이스케이프 시퀀스를 통해 텍스트로 변환되고 최종적으로 터미널에 기록됩니다. 일반적인 PNG, GIF 또는 JPEG 파일을 터미널에 파이프하려면 imgcatpython 패키지를 설치한 다음 터미널에서 imgc를 실행해야 합니다.

    See all articles