使用 Laravel 从零做一个社交网站 (二)

使用 Laravel 从零做一个社交网站 (二)

当一个用户正常访问我们的一个页面时, 一般会经历如下几个步骤

  1. 输入URL进行访问.
  2. 路由根据请求的URL, 将请求映射到控制层 (Controller) .
  3. 控制器 (Controller) 收到请求, 对请求开始处理
  4. 控制层 (Controller) 从数据层 (Model) 获取数据, 并将数据传递给视图层 (View).
  5. 视图层 (View) 渲染数据

在Laravel中, 我们用路由定义URL和URL的请求方式, 当用户请求时, 再将该URL分配给对应的控制器中进行处理.

配置路由

由于我们不需要默认的欢迎界面, 所以需要删除原先的欢迎界面路由, 添加首页及关于页的路由

routes/web.php

1
2
3
4
5
6
7
<?php

use Illuminate\Support\Facades\Route;


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

使用命令生成控制器

创建完路由后, 相应的我们要创建对应的控制器及控制器方法

1
php artisan make:controller PagesController

运行命令后 /app/Http/Controllers 路径下会出现一个新的 PHP 文件 PagesController.php , 这是一个基本的控制器文件, 让我们来简单分析一下这个文件

/app/Http/Controllers/PagesController.php

1
2
3
4
5
6
7
8
9
10
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PagesController extends Controller
{
//
}

namespace 用来定义该文件的命名空间, 定义命名空间后, 可以解决类/函数/常量或第三方类/函数/常量之间的名字冲突. 提高源代码的可读性.

use 用来引用PHP中要使用的类, 引用后方便在文件中进行调用.

extends 是用来继承父类, 这可以让你调用父类中除了 private 类型的所有方法.

Laravel 遵循 PSR 规范, 所以控制器命名应用大驼峰加复数形式来命名 (大驼峰: 所有单词首字母大写)

添加视图

在我们的 PagesController 控制器下, 定义两个方法以对应路由

app/Http/Controllers/PagesController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PagesController extends Controller
{

public function home()
{
return '这里是首页';
}

public function about()
{
return '这里是关于我们';
}

}

当我们请求 social.com/ 时, 根据定义的路由我们会访问到home这个方法, 然后返回 ‘这里是首页’ 字符串, 在这里我们仅仅是返回了一个字符串, 并不能算是真正的视图, 要想返回视图, 还需要借助view方法.

app/Http/Controllers/PagesController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PagesController extends Controller
{

public function home()
{
return view('pages/home');
}

public function about()
{
return view('pages/about');
}

}

在这里我们把返回的两个字符串改为了返回两个 view 方法, 并在 view 方法里加入了需要渲染的文件名作为参数, 这样 Laravel 会渲染 resources/views 文件下的: pages/home.blade.php 文件、 pages/aboute.blade.php 文件

现在我们需要在 resources/views 文件夹下手动创建两个文件

resources/views/pages/home.blade.php

1
2
3
4
5
6
7
8
9
10
<!doctype html>
<html lang="zh">
<head>
<title>主页</title>
</head>
<body>
<h1>这里是主页</h1>
<hr>
</body>
</html>

social.com/

resources/views/pages/about.blade.php

1
2
3
4
5
6
7
8
9
10
<!doctype html>
<html lang="zh">
<head>
<title>关于我们</title>
</head>
<body>
<h1>关于我们</h1>
<hr>
</body>
</html>

social.com/about

You forgot to set the qrcode for Alipay. Please set it in _config.yml.
You forgot to set the qrcode for Wechat. Please set it in _config.yml.
You forgot to set the business and currency_code for Paypal. Please set it in _config.yml.
You forgot to set the url Patreon. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×