首页 » Web技术 » Laravel » 正文

[Laravel 5 教程学习笔记] 三、路由、控制器及视图简介

Laravel应用的 大多数路由都将在 app/Http/routes.php 中定义,大多数基本的 Laravel 路由都只接受一个 URI 和 一个 闭包(Closure) 参数。下面是一个简单的GET路由:

Route::get('/', 'WelcomeController@index');
  • Route: 声明一个路由;
  • get:即定义一个GET路由,除get外,还有postputdelete路由;
  • /:即指向网站
  • WelcomeController@index:前面为控制器,后面是调用控制器中的方法

该路由是用户访问根目录 / 时,执行控制器WelcomeController中的index方法。

上面路由调用控制器app/Http/Controllers/WelcomeController.php中的index()方法:

public function index()
{
    return view('welcome');
}

该方法返回了一个welcome视图,该视图即为resources/views/welcome.blade.php。也可以直接在方法中返回指定的内容,如修改index()方法:

public function index()
{
    return 'Hello World';
    // return view('welcome');
}

刷新浏览器,会看到页面输出内容已经改变。

laravel-route-1

下面新建一个contact路由,在路由中增加下面的代码:

Route::get('/contact', 'WelcomeController@contact');

contact前面的 / 可以省略不写。该路由会调用WelcomeController控制器下面的contact()方法,因此在WelcomeController控制器中添加下面的方法:

public function contact() {
    return 'Contact me';
}

之后访问http://laravel.dev/contact,将得到下面的结果:

laravel-route-2

方法中除了可以返回字符串,也能返回json数据(API开发)或html视图文件等。Laravel默认的视图文件位于resources/views目录下。如果需要为视图文件指定子目录,则用下面的方法调用:return view('pages/contact');,也可以更加简单的用这种方法:return view('pages.contact');

假如把上面的contact()方法中的内容改成return view('pages.contact');,那么我们需要在resources/views下创建一个pages文件夹,之后在pages文件夹中创建contact.blade.php文件,在文件中添加下面的内容,该文件的内容即为contact()的返回结果。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<h1>Contact me</h1>
</body>
</html>

现在再次刷新浏览器查看结果。


该篇属于专题:《Laravel 5 基础视频教程学习笔记

本文共 9 个回复

  • henson 2015/08/28 09:14

    赞一个,比看中文手册易懂

  • shea 2015/11/03 11:26

    :roll: :arrow: :cry: 这个简直太棒了好么?!!!我都想抱卤煮大腿了!!简直不能再给力了!网上搜索laravel最完美的教程!!

  • 枯草地 2015/11/09 18:11

    给钱都行,赞! :mrgreen:

  • 释永富 2015/11/25 15:55

    注册一个账号登录之后只能访问home,访问其他测试路由都自动跳转到home了?退出之后才能测试路由 :eek:

  • tyc 2016/08/16 10:58

    太感谢了,多点你几次广告支持你!!!

  • BossChen 2017/01/08 19:13

    以下是我碰到的问题及解决方法添加一个路由contact后无法访问到,404 not found解决方法:使wampserver可以使用.htaccess, 打开httpd.conf中的LoadModule rewrite_module modules/mod_rewrite.so, 即去掉其前面的#

发表评论