1 控制器 Controller
控制器是 MVC 中的 C ,用于接收 HTTP 请求并进行逻辑处理;
1.1 自动创建控制器
- laravel 自带了一个命令行工具,可以在VS CODE终端中使用;
- 创建控制器命令: (例:创建一个
User
控制器)
php artisan make:controller User
创建成功后:在
app->Http->Controller
目录下可以看到自动创建的User
控制器,内容如下:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class User extends Controller
{
//
}
自动创建的控制包含:
1、命名空间
2、引入laravel的Request类
3、创建的User控制器(类),并自动继承自带的基类控制器。
(注:控制器类名必须与文件名相同,符合PSR-4规则才能自带加载。)
1.2 手动创建控制器
从自动创建的控制器可以看出,并没有多少代码,我们完全可以手动创建,下面演示手动创建一个
User
的控制器;
第一步:在
app->Http->Controller
目录下新建User.php
第二步:命名空间及创建类
User
:代码如下:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class User{}
这样我们就手动创建了一个
User
的控制器,当然是个空的,里面并没有任何方法。(未继承基类控制器)
1.3 创建控制器方法
手动创建两个方法:其中
users()
方法使用视图输出,hello()
方法直接return
;
public function users()
{
//定义一个用户数组
$date=[
'users'=>[
'id' => 1,
'userName' => '西门老师',
'age' => 30,
'email' => 'ximen@php.cn',
'occupation'=> '讲师'
]
];
//使用助手函数view()输出,第1个参数:视图模板名称,第2个参数:数据源(数组)
return view('users',$date);
}
public function hello($name)
{
return '我的名字是:'.$name;
}
2 定义路由
创建好控制器,必须通过设置路由来访问创建好的控制器,路由的定义文件在根目录
routes/web.php
中;
- 第1个参数:路由名称
- 第2个参数:控制器@方法名
Route::get('users', 'Users@users');
Route::get('users/hello/{name}', 'Users@hello');
3 视图(创建视图模板)
1、视图模板在根目录
resources\views
中;2、模板名称规则:
视图模板名称.blade.php
;3、控制器
users
方法定义视图名称为users
,所以我们创建的模板文件名为:users.blade.php
。
编写代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Users控制器</title>
</head>
<body>
<h3>Users控制器-数组输出</h3>
<div>昵称:{{$users['userName']}}</div>
<div>年龄:{{$users["age"]}}</div>
<div>邮箱:{{$users["email"]}}</div>
<div>职业:{{$users["occupation"]}}</div>
<h3>流程控制-if/else/endif</h3>
@if ($users["age"] < 30)
<p>拼搏中</p>
@elseif($users["age"] <= 40)
<p>资深讲师</p>
@else
<p>养老去了~~~</p>
@endif
<h3>流程控制-switch</h3>
@switch($users["age"])
@case($users["age"]<30)
<p>拼搏中</p>
@break
@case($users["age"]<=40)
<p>资深讲师</p>
@break
@default
<p>养老去了~~~</p>
@endswitch
</body>
</html>
- 模板语法:
{{$变量名}}
=> 解析后:<?php echo e($变量名); ?>
e($变量名)
laravel自定义函数,加入了过滤规则(如:html/script标签)- 如果不希望laravel过滤则使用:
{!!$变量名!!}
;
访问user控制器方法:
总结:
- 初步了解了MVC中的V(View)和C(Controller)
- 了解了laravel路由的基本定义