Laravel最佳分割路由文件,添加路由文件

 在laravel 5.4中的routes文件夹里面默许有七个路由文件web.php和api.php。

方今做项目用到了laravel框架,所以决定从前端的角度对laravel举办了有些读书和总计。

Laravel的路由功效很有力,默许都是概念在routes.php文件中,随着项目进一步大,我们须求的定义的路由越多,想象一下,如若几百上千个路由都定义在一个文本中,咋样去拥戴?也许还有分歧的人都在同一个文书定义路由,那就招致了顶牛,因而大家要求分割routes.php文件,上边介绍一种很优雅的主意。

前言

 

laravel简介

1、laravel是php框架
2、具有验证、路由、session、缓存、数据库迁移工具、单元测试等常用的工具和功效

在app/Providers/Route瑟维斯(Service)Provider.php的map方法中得以如下概念:

Laravel 的路由功效很有力,默认都是概念在 routes.php
文件中,随着项目越发大,大家需求的概念的路由更加多,想象一下,倘使几百上千个路由都定义在一个文件中,怎样去维护?也许还有差其余人都在同一个文书定义路由,那就造成了争论,由此大家需求分割
Laravel最佳分割路由文件,添加路由文件。routes.php 文件。

新建路由文件

咱俩在routes文件夹下多创制一个admin.php文件作为管理后台的路由

laravel使用

1、开发条件

1.对php版本的须要

laravel版本 PHP版本
5.1、5.2 5.5.9+
4.2 5.4+
4.1 5.3.7+

ps:laravel发表的率先个LTS(long time
support)版本是5.1,提议选用5.1上述版本

2.Windows系统下利用的是XAMPP搭建环境

亚洲必赢手机入口 1

xampp

上图XAMPP安装后XAMPP文件夹下文件目录
2、下载
1、直接下载地址:http://www.golaravel.com/download/
2、本文案例使用5.2本子
3、启动XAMPP,下载的安装包解压,解压后的文本夹整个放入htdocs目录下
4、在浏览器中输入http://localhost:82/laravel/public/,82是自我设置的端口,默许端口是80
5、如若不出错可以看出以下内容

亚洲必赢手机入口 2

laravel5

3、目录

亚洲必赢手机入口 3

laravel目录

1、app包蕴应用程序的骨干代码
ps:MVC中的C,即controller放在app文件夹下的http文件夹中
2、bootstrap目录包涵框架启动和活动加载配置的公文
3、config包涵所有应用程序的布局文件,eg:缓存,数据库,邮件,队列,session,视图and
so on。
4、database,数据库迁移与数码填充文件
5、storage放一些编译后生成的公文
亚洲必赢手机入口,6、tests测试相关
7、vendor放置一些借助模块
8、public文件夹放一些公用的css,js,image图片等
9、resources放一些模板,视图文件

4、写一个Hello World
在设置时我们曾经看到过laravel5,那几个页面是laravel框架的默许welcome页,该页面形式resources文件夹下边的views文件夹中,文件名叫做welcome.blade.php,打开该文件将Laravel
5改为Hello World!
刷新页面done~

public function map(Router $router){

         
$router->group([‘namespace’=>$this->namespace],function($router)
{

                      foreach(glob(app_path(‘Http//Routes’)
.’/*.php’) as $file) {

                             
$this->app->make(‘App\\Http\\Routes\\’.
basename($file,’.php’))->map($router);

                      }

          });

}

上边介绍一种很优雅的不二法门。

修改RouteServiceProvider.php

 

    protected function mapAdminRoutes()
    {
        Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/admin.php'));
    }

  

 public function map()
    {
        $this->mapApiRoutes();

        $this->mapWebRoutes();

        $this->mapAdminRoutes(); //添加上一部的方法

        //
    }

  

laravel框架新建页面流程

1、什么是路由
路由:当用户访问一个URL地址时,浏览器请求相应的页面,那中间路由决定着资源和URI的照应关系。
在laravel中路由文件routes.php用于放在app/Http/下。上节例子中Hello
world写在welcome.blade.php文件中,该公文位于laravel项目标根目录下,因而打开routes.php文件可以观察相应的路由是

Route::get('/', function () {
    return view('welcome');
});

那段代码Route路由运用get方法,在根目录下回到一个视图,该视图就是位于resources下的views文件夹下的welcome文件。
写个小页面
在resources/views/下新建monday.blade.php文件,里面写‘明日周六’,在routes.php文件中写上以下代码

Route::get('monday', function () {
    return view('monday');
});

浏览器中走访http://localhost:\*\*/laravel/public/monday
可以观看刚刚效果。
ps:路由的央求方法有多重,get只是其中的一种,除此之外还有post,put,delete等多种艺术
2、新建控制器
控制器负责从视图读取数据、控制用户输入、并且像模型发送数据
在laravel中新建控制器需求在Http/Controllers文件夹下,新建一个控制器文件。

新建步奏
1、在Http/Controllers文件夹下新建一个php文件命名为WeekController.php
在该文件中输入以下代码

<?php
namespace App\Http\Controllers;
use App\Week;
// 声明命名空间
// 创建一个类WeekController继承自控制器基类
class WeekController extends Controller
{
    // 写一个方法
    public function week()
    {
        return 'week';
    }
}

2、将控制器与路由相关联
在routes.php中添加以下代码

Route::get('week','WeekController@week');

浏览器访问就足以看出网页中输出week。
3、新建视图
事先曾经提到过视图页面放在resources/views/下
新建步奏
1、在该文件夹下新建一个week.blade.php文件,敲入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新建视图</title>
</head>
<body>
    今天星期四
</body>
</html>

2、打开routes.php文件,敲入

Route::get('weekdemo',function(){
    return view('week');
});

4、新建模型
laravel中模型是一向放在App目录下,模型是应用程序的本位部分,模型是对工作数据的包装用于落到实处业务逻辑。
在App目录下有一个默认的model叫做User.php。当我们须要树立自己的模型时得以新建一个祥和的php文件,比如新建一个week.php。
其间会有上边三行代码

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

和控制器相似那几个也是对命名空间的宣示
然后敲入如下代码

class Week extends Model
{
    public static function getWeek(){
        return 'today is monday';
    }
}

接下来利用时在控制器中的week方法里return Week::getWeek();即可。

文件社团结构图如下:

app/Providers/RouteServiceProvider.php
map措施中得以如下概念:

亚洲必赢手机入口 4

public function map(Router $router)
{
  $router->group(['namespace' => $this->namespace], function ($router) {
    //require app_path('Http/routes.php');
    foreach (glob(app_path('Http//Routes') . '/*.php') as $file) {
      $this->app->make('App\\Http\\Routes\\' . basename($file, '.php'))->map($router);
    }
  });
}

如此它会遍历app/Http/Routes/文件夹下的文书,遍历每个文件路由类的map方法,每个文件的结构都接近,如下:

文件社团结构图如下:

亚洲必赢手机入口 5

亚洲必赢手机入口 6

把路由规则都写到每个文件的map方法中,那样一来,就兑现了很好的routes.php文件的分离管理。其它,你也得以概括的剪切,直接把routes.php中的定义拆散成八个文件,通过
require 的办法引入,不过哪位更好,一目了然。

那样它会遍历 app/Http/Routes/ 文件夹下的文件,遍历每个文件路由类的
map办法,每个文件的结构都似乎,

那就是说如此路由分手多个公文后岂不是增添调用次数,会不会影响属性?答案是不必顾虑。通过
Laravel 的授命:

举个例子:

php artisan route:cache

<?php
/**
 * Created by PhpStorm.
 * User: xl
 * Date: 2016/7/4
 * Time: 18:07
 */
namespace App\Http\Routes;

use Illuminate\Contracts\Routing\Registrar;

class HomeRoutes
{
  public function map(Registrar $router)
  {
    $router->group(['domain' => 'www.tanteng.me', 'middleware' => 'web'], function ($router) {
      $router->auth();
      $router->get('/', ['as' => 'home', 'uses' => 'IndexController@index']);
      $router->get('/blog', ['as' => 'index.blog', 'uses' => 'BlogController@index']);
      $router->get('/resume', ['as' => 'index.resume', 'uses' => 'IndexController@resume']);
      $router->get('/post', ['name' => 'post.show', 'uses' => 'ArticleController@show']);
      $router->get('/contact', ['as' => 'index.contact', 'uses' => 'IndexController@contact']);
      $router->post('/contact/comment', ['uses' => 'IndexController@postComment']);
      $router->get('/travel', ['as' => 'index.travel', 'uses' => 'TravelController@index']);
      $router->get('/travel/latest', ['as' => 'travel.latest', 'uses' => 'TravelController@latest']);
      $router->get('/travel/{destination}/list', ['as' => 'travel.destination', 'uses' => 'TravelController@travelList']);
      $router->get('/travel/{slug}', ['uses' => 'TravelController@travelDetail']);
      $router->get('/sitemap.xml', ['as' => 'index.sitemap', 'uses' => 'IndexController@sitemap']);
    });
  }
}

生成路由缓存文件后,路由只会读取缓存文件的路由规则,因而不会潜移默化属性,那样做让开发更高效和正式。

把路由规则都写到每个文件的 map措施中,那样一来,就达成了很好的
routes.php 文件的分离管理。其余,你也得以省略的剪切,间接把
routes.php 中的定义拆散成多少个文件,通过
require的措施引入,但是哪位更好,一目精通。

那就是说这么路由暌违多个公文后岂不是增添调用次数,会不会潜移默化属性?答案是无须担心。通过
Laravel 的命令:

php artisan route:cache

生成路由缓存文件后,路由只会读取缓存文件的路由规则,因而不会潜移默化属性,那样做让开发更急速和标准。

好了,以上就是Laravel路由文件(routes.php)最佳分割格局的全体内容,希望对大家学习Laravel有所辅助。也冀望我们多多支持脚本之家。

你可能感兴趣的篇章:

  • 有关Laravel
    Route重定向的一个瞩目点
  • Laravel中取得路由参数Route
    Parameters的五种形式言传身教

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图