Laravel 框架路由原理与路由访问实例分析

本文实例讲述了Laravel 框架路由原理与路由访问。分享给大家供大家参考,具体如下:

一、简单了解路由的概念

在网络成为吃住一样的基本需求的今天;
断开了网络就像断开了与世界的联系的感觉;
对于现实中的路由我们应该是不陌生的;
最起码了解 wifi 吧;
你家里只有一根网线;
网线上接着 wifi 路由器;
多部手机和电脑就可以通过 wifi 上网了;
路由器起到了一个分发的作用;

二、Laravel 中的路由

我们访问项目的时候;
请求首先到达 public/index.php 入口文件;
可以把 index.php 类比成网线;
route/web.php 类比成路由器设备;
controller 控制器类比成多部手机设备;

有些框架的路由是自动绑定控制器的;
创建了控制器;路由也就自动有了;
laravel 的每一个路由是需要手动定义的;
很多童鞋会觉得这样很繁琐;
当年我也觉得麻烦;
还专门研究了自动绑定控制器的方法;
不过我并不会把方案写出来误导大家;
因为手动定义这种解耦的方式有它的好处;
以后重构项目路由的时候就简单方便多了;
定义一条路由也就秒秒钟的事;
不必纠结;

打开 web.php ;
我们可以看到这样的代码;

我们来解析下;
Route 是一个类;
访问类的静态方法是用 ::的形式;
那么get 就是Route类的一个静态方法;
get 静态方法可以传2个参数;
第一个参数现在是 / ;
我们知道 function 是用来定义函数的; 
第二个参数就是一个闭包函数;
在这个闭包函数中 return 返回的东西就是我们请求到的内容;
这3行代码告诉我们3件事;

第一;
Route::后面可以跟一个请求方法;
当前代码中就是 get 请求;
get 和 post 在请求中是最基本最常用的方法;
很容易就 Lenovo 到;
如果写成 post 的话;
那就表示是接受一个 post 的请求;

第二:
/表示的是首页;
在 url 中就是域名后面的那个斜杠;
http://bjyblog.test/
只不过后面如果没有其他内容的话一般是被省略了;
于是我们就很容易的模仿一下;

这样的写的话;
那 url 就应该是

http://127.0.0.1:8000/article ;

第三;
view 函数可以直接定位到 resources/views 目录;
它可以接受一个参数;
这个参数就是 resources/views 目录下的文件名去掉 blade.php后缀;
我们可以创建一个 resources/views/article.blade.php 文件;
里面写上 bjyblog article;
这样我们就可以定义请求了;

访问 http://127.0.0.1:8000/article

到这;
我们已经把路由和视图V关联起来了;
我们也创建了一个非常简单的路由了;

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

时间: 2020-04-11

Laravel中获取路由参数Route Parameters的五种方法示例

前言 大家都知道Laravel 获取路由参数的方式有很多,并且有个小坑,现汇总如下,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 假设我们设置了一个路由参数: /** * 定义路由参数名称分别为: param1,param2 */ Route::get('/{param1}/{param2}', 'TestController@index'); 现在我们访问 http://test.dev/1/2 在 TestController 中: /** * 路由参数获取方法 * *

跟我学Laravel之路由

基本路由 应用中的大多数路都会定义在 app/routes.php 文件中.最简单的Laravel路由由URI和闭包回调函数组成. 基本 GET 路由 复制代码 代码如下: Route::get('/', function() {     return 'Hello World'; }); 基本 POST 路由 复制代码 代码如下: Route::post('foo/bar', function() {     return 'Hello World'; }); 注册一个可以响应任何HTTP动作

ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼

前言 读过一篇关于Zend Framework2的技术文章<ZF2多级树形路由Route配置实例>,是介绍路由配置的.我觉得很有意思,这是的需求: /user对应用户列表页面 /user/:user_id对应用户的个人主页,比如 /user/AlloVince 就对应AlloVince用户的个人主页 /user/:user_id/blog/对应用户的博客列表页面,比如 /user/AlloVince/blog 就会列出AlloVince写过的Blog /user/:user_id/blog/:

laravel中命名路由的使用方法

laravel提供了很多magic方法来,先来讲讲命名路由的使用,有两种方法非常便捷. 命名路由让你可以更方便的为特定路由生成 URL 或进行重定向.你可以使用 as 数组键指定名称到路由上 1.第一种:通过route路由中的as关键字来实现 Route::get('api/user',['as'='web.user'],'messageController@userInformation'); 2.第二种:通过Route的magic方法name来实现命名路由 Route::get('api/u

Laravel最佳分割路由文件(routes.php)的方式

前言 Laravel 的路由功能很强大,默认都是定义在 routes.php 文件中,随着项目越来越大,我们需要的定义的路由越来越多,想象一下,如果几百上千个路由都定义在一个文件中,如何去维护?也许还有不同的人都在同一个文件定义路由,这就造成了冲突,因此我们需要分割 routes.php 文件. 下面介绍一种很优雅的方式. 在 app/Providers/RouteServiceProvider.php 的 map 方法中可以如下定义: public function map(Router $r

Laravel路由研究之domain解决多域名问题的方法示例

材料准备 一份干净的laravel 两份Nginx配置文件,主要配置如下: server_name *.amor_laravel_test_1.amor; root /var/www/amor_laravel_test/public; index index.php index.html index.htm; server_name *.amor_laravel_test.amor; root /var/www/amor_laravel_test/public; index index.php

Laravel框架路由和控制器的绑定操作方法

本文实例讲述了Laravel框架路由和控制器的绑定操作方法.分享给大家供大家参考,具体如下: 路由和控制器的关系 路由文件地址在\app\Http\routes.php,我们来看两种不同的路由. Route::get('/', function () { return view('welcome'); }); Route::get('/hi', function () { return 'hello world'; }); 以上均为绑定匿名函数的路由,虽然可以返回视图,也可以返回字符串,但本质都

Laravel框架路由配置总结、设置技巧大全

基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码 代码如下: Route::get('/', function() { return 'Hello World'; }); 基本 POST 路由 复制代码 代码如下: Route::post('foo/bar', function() { return 'Hello World'; }); 注册一个路由以响应所有 HT

Laravel 之url参数,获取路由参数的例子

如下所示: echo '<pre>'; var_dump( $request->url() ); // url echo '</pre>'; echo '<pre>'; var_dump( $request->route( 'email' ) ); //获取路由参数 echo '</pre>'; echo '<pre>'; var_dump( $request->method() ); // methed echo '</

修改Laravel5.3中的路由文件与路径

前言 大家可能没有注意到, 在 Laravel 4 以及更老版本中, 路由逻辑是性能上的一个瓶颈--特别是对于有很多路由定义的应用而言. 一个只有几百条路由定义的 Laravel 站点, 框架光注册路由就需要半秒多的时间. 不过以后不用担心这个问题了, 因为 Laravel 5 引入了 路由缓存(route caching), 可以大大优化路由的性能(闭包方式定义的路由不能缓存, 所以该把所有的闭包路由定义都移到控制器中了). 1.回顾Laravel 5.2中路由的修改 在 Laravel 5.

Laravel中重写资源路由自定义URL的实现方法

前言 本文主要给大家介绍了关于Laravel中重写资源路由自定义URL的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 重写原因 近期在使用Laravel开发项目过程中,为了简化路由代码使用了Laravel的资源路由,Route::resource('photo', 'PhotoController'); 在默认情况下,Laravel生成的路由表如下: 动作 路径 Action 路由名称 GET /photo index photo.index GET /photo/c

Laravel 5框架学习之路由、控制器和视图简介

查看 app/Http/routes.php 复制代码 代码如下: Route::get('/', 'WelcomeController@index'); @是一个界定符,前面是控制器,后面是动作,表示当用户请求url / 的时候,执行控制器 WelcomeController 中的 index 方法 复制代码 代码如下: app/http/controllers/welcomecontroller.php public function index() { return view('welco

Laravel 5框架学习之模型、控制器、视图基础流程

添加路由 复制代码 代码如下: Route::get('artiles', 'ArticlesController@index'); 创建控制器 复制代码 代码如下: php artisan make:controller ArticlesController --plain 修改控制器 <?php namespace App\Http\Controllers; use App\Article; use App\Http\Requests; use App\Http\Controllers\Co

Laravel 5框架学习之表单

首先让我们修改路由,能够增加一个文章的发布. 复制代码 代码如下: Route::get('articles/create', 'ArticlesController@create'); 然后修改控制器 复制代码 代码如下: public function create() {         return view('articles.create');     } 我们返回一个视图,新建这个视图.我们当然可以直接使用HTML建立表单,但我们有功能更好的办法.我们使用一个开源库,Jeffrey

Laravel 5框架学习之用户认证

Laravel 出厂已经带有了用户认证系统,我们来看一下 routes.php,如果删除了,添加上: Route::controllers([ 'auth' => 'Auth\AuthController', 'password' => 'Auth\PasswordController' ]); 可以使用 php artisan route:list 查看一下.浏览器中访问 /auth/login,可以看到登陆界面,最好把系统默认的 app.blade.php 中关于 google 的东西注释

Laravel 5框架学习之日期,Mutator 和 Scope

在我们前面的解决方案中,直接给 published_at 赋值为当前日期实际上是一个临时解决方案,我们需要设定发布日期,可能是未来2天后才发布,让我们修改这个问题. 首先修改控制器: public function store() { Article::create(Request::all()); return redirect('articles'); } 然后修改视图,添加发布日期字段 @extends('layout') @section('content') <h1>Write a

Laravel 5框架学习之子视图和表单复用

我们需要处理编辑文章的问题.当然我们可以手工添加新的路由,就像这样: 复制代码 代码如下: Route::get('/articles/{id}/edit', 'ArticleController@edit'); 让我们在命令行下使用 artisan 的 route:list 来查看我们当前的路由: 复制代码 代码如下: php artisan route:list 在符合 RESTful 的情况下,可能直接使用 laravel 的 resource 路由是一种好的选择,然我们将所有的路由都去掉

Laravel 5框架学习之环境与配置

.env 文件是配置文件,包括数据库配置信息,查看 config->database.php ,connections 里面包含了所有数据库的配置,可以在 default 中选择要使用的数据库.在数据库配置中,有关 env('DB_HOST', 'localhost') 就是读取 .env 配置文件的信息.第二个参数是缺省参数. 我们使用 mysql 数据库,修改 .env: DB_HOST=localhost DB_DATABASE=laravel DB_USERNAME=root DB_PA

Laravel 5框架学习之向视图传送数据

我们在Routes.php中新建一个路由 复制代码 代码如下: Route::get('about', 'PagesController@about'); 在浏览器中浏览会获得一个错误,错误信息仅仅是一个提示信息,缺少细节,在生产环境 It' ok,但是开发阶段我们希望获得详细信息. 在项目的根目录找到 .env 文件,修改 复制代码 代码如下: APP_DEBUG=true 这将显示详细的错误信息,PagesController 不存在.但在生产环境一定要设置为 false 我们可以手工新建控

Laravel 5框架学习之数据库迁移(Migrations)

database migrations 是laravel最强大的功能之一.数据库迁移可以理解为数据库的版本控制器. 在 database/migrations 目录中包含两个迁移文件,一个建立用户表,一个用于用户密码重置. 在迁移文件中,up 方法用于创建数据表,down方法用于回滚,也就是删除数据表. 执行数据库迁移 复制代码 代码如下: php artisan migrate #输出 Migration table created successfully. Migrated: 2014_1

Laravel 5框架学习之表单验证

在建立一个文章的时候,如果你什么都不输入直接提交,ok,你获得了一个空的文章,没有任何错误提示,这是不对的.在命令行下运行 php artisan 可以看到一个选项 make:request,新建一个form request类.在命令行执行 复制代码 代码如下: php artisan make:request CreateArticleRequest 生成的文件在 app/http/requests 目录下.在文件中我们可以看到两个方法: public function authorize()