4. 路由到控制器 - Laravel从零开始教程

从零学Laravel目录列表

我们之前都是将一个闭包函数作为第二个参数传入到Route类对应的方法中,但是这种方式我们在做测试的时候可以使用下,真正开发的时候还是需要将让route能指向对应的控制器类的方法的,为什么要这么做?

第一:这样不会让你的路由文件太过臃肿和混乱,其次在项目正式上线前我们会执行php artisan route:cache来生成一个路由缓存文件,官方说这样能使路由解析的速度快上100倍,是不是吹牛,我不知道,但是变快是肯定的,但是执行这条命令的时候,只有route对应控制器的代码才会被缓存,所以从这两点来看,我不建议大家在正式项目开发的时候去路由上写闭包函数。

我们还是打开我们项目的route.php文件, 这次我们将文件中的代码改成这样:

// Route::get('/', function () {
//     $users = ['Zhoujiping', 'Kuker Chou'];
//     return view('welcome', compact('users'));
// });

Route::get('/', 'PagesController@home');

这里先说下get()方法,get()对应http方法中的get,使用get()方法,就说明这条路由是通过method=get来访问的,那么如果http访问的method=post请求呢,那就是对应Route::post()方法,是不是很好记,下面我们列举下这些方法:

Route::get()      //  对应http的get
Route::post()     //  对应http的post
Route::put()      //  对应http的put
Route::patch()   //   对应http的patch
Route::delete()  //   对应http的delete

回过头来再来看:

Route::get('/', 'PagesController@home');

这里PagesController是一个控制器类,home是该控制器类的方法,整条语句的意思就是当访问/的时候,就会去执行PagesController类中的home方法。

PS:这里要提一下命名规范,类名要用驼峰命名法,控制器类我建议大家以单词的复数 + Controller.php, 如我们命名成PagesController.php,但不要命名成PageController.php, 当然怎么命名都不会让程序错误,这里大家可以想一下为什么控制器类中的单词要使用复数呢?

我们来访问一下:

Laravel路由到控制器

从错误提示可以看出,route已经指向了控制器,但是说控制器不存在,那么现在我们要去建立控制器类了,我们可以在app/Http/Controllers/目录中手动建立PagesController.php文件,然后让其继承app/Http/Controllers/Controller.php这个类。不过这么做似乎太过麻烦了,这时候我们就可以用过laravel强大的Artisan来自动生成这个控制器类:

➜ cd /usr/local/var/www/Laravel52 #切换到项目根目录
➜ php artisan make:controller PagesController #生成控制器 
Controller created successfully.

我们不需要去记php artisan的任何命令,你只要知道它有哪些功能即可,忘记命令的时候执行下php artisan查看下命令即可。如果要查看某条命令的具体信息,你还可以这么做:

➜ php artisan help make:controller           
Usage:
  make:controller [options] [--] <name>

Arguments:
  name                  The name of the class

Options:
      --resource        Generate a resource controller class.
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --env[=ENV]       The environment the command should run under.
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
 Create a new controller class

现在我们可以在app/Http/Controllers/找到我们的PagesController.php类了,我们打开它,默认就生成了下面的代码:

<?php

// 声明命名空间
namespace App\Http\Controllers;

// 下面两句我们暂时不用,一会我们删除它
use Illuminate\Http\Request;
use App\Http\Requests;

// 控制器类都会继承Controller类
class PagesController extends Controller
{
    //
}

下面我们写上我们的home方法:

<?php

namespace App\Http\Controllers;

class PagesController extends Controller
{
    public function home()
    {
        $users = ['Zhoujiping', 'Kuker Chou'];
        
        return view('welcome', compact('users'));
    }
}

我们再来运行下:

laravel控制器

就那么的简单,我们再来玩一下,route.php写路由:

Route::get('about', 'PagesController@about');

PagesController中如下:

<?php

namespace App\Http\Controllers;

class PagesController extends Controller
{
    public function home()
    {
        $users = ['Zhoujiping', 'Kuker Chou'];
        
        return view('welcome', compact('users'));
    }

    public function about()
    {
        return 'About Page';
    }
}

ok, 我们访问http://localhost:8000/about就会出现About Page这些字了。

好了,本节到这里结束。这几节都非常的简单,单存阅读的话,很快就能看完,一定要自己去测试和运行,否则后续的教程是肯定学不下去的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容