一、路由相关
-> 基础路由设置
Route::get('/', function () {
return view('welcome');
});
// Route::get('hello', function () {
// return 'hello';
// });
Route::get('hello', 'Admin\IndexController@index');
Route::match(['get','post'],'match',function () {
return 'get&post请求';
});
Route::any('any',function () {
return 'any请求';
});
-> 路由参数
//三个参数,sex参数可不写,id和name参数有一定规则
Route::get('hello/{id}/{name}/{sex?}', function ($id,$name,$sex='男') {
return "id={$id}/name={$name}/sex={$sex}";
})->where(['id'=>'^\d+$', 'name'=>'^[a-zA-Z]+$']);
-> 路由分组
// 路由分组
Route::group(['prefix'=>'admin','namespace'=>'Admin'], function () {
Route::get('login', 'LoginController@login');
Route::get('user/index', 'UserController@user');
// 中间件
Route::group(['middleware' => 'checkuser'], function () {
// 定义路由...
});
});
// 引入自定义路由文件
include base_path('routes/admin/admin.php');
二、控制器
-> 目录结构及创建控制器
cmd进入项目根目录执行:
php artisan make:controller 控制器类名称
一般对控制器进行分模块管理
定义位置改为:app/Http/Controllers/模块目录/控制器文件名
cmd进入项目根目录执行:
php artisan make:controller Admin/IndexController
-> request接收参数&路由参数的绑定
注意:如果方法中出现多个形参,Request $request
只能放在第一个位置。
路由规则:
Route::get('index/index/{id}/{name}', 'IndexController@index');
①获取请求参数 (all方法、input方法)
Request类提供了很多方法,用于接收请求参数。
//all方法以数组方式获取全部参数
$params = $request->all();
//input方法获取单个参数
$name = $request->input('name');
//only方法获取部分参数(获取指定的参数)
$params = $request->only(['name', 'email']);
$params = $request->only('name', 'email');
//except方法获取部分参数(获取除了指定参数外的其他参数)
$params = $request->except(['sex', 'age']);
$params = $request->except('sex', 'age');
//has方法判断是否有指定参数(返回布尔值)
if($request->has('id')){}
②获取请求方式
//method方法获取请求方式
$method = $request->method();
//isMethod方法判断请求方式
if($request->isMethod('post')){}
③获取请求路径
//path方法 路由部分
$path = $request->path();
//url方法 域名+路由部分
$url = $request->url();
//fullurl方法 域名+路由部分+查询字符串
$fullurl = $request->fullurl();
三、Laravel框架中的模型
-> 定义位置
定义模型的位置,默认是在app目录下面,但是为了管理方便,可以定义在app/Http/Models
目录下。
-> 命名规则
框架默认规则:数据表名是模型类名的复数形式,即数据表名采用复数形式,模型名称采用单数形式。
注意:如果不遵循此规则,需要在模型中使用$table
属性指定表名
-> 创建模型类
可以使用artisan命令;
默认情况下,模型直接放在app目录:
[project] > php artisan make:model Member
如果模型放在app/Http/Models目录下,则执行:
[project] > php artisan make:model Http/Models/Manager
Manager模型引入父类:
use Illuminate\Database\Eloquent\Model;
真实位置在:
vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
-> 定义模型注意事项
创建好的model模型类要继承:Illuminate\Database\Eloquent\Model
类
每个模型类里边一般可以声明以下成员:
protected $table = 数据表名称;
protected $primaryKey = 主键字段;
public $timestamps = 自动添加时间字段[布尔值];
protected $fillable = 数据填充时允许操作的字段[数组];
第一:定义一个$table
属性,值是不要前缀的表名,如果不指定$table
则默认使用类名的复数形式作为表名。
第二:定义$primaryKey
属性,值是主键名称,如果不设置主键,默认使用id
字段作为主键。
第三:定义$timestamps
属性,值是布尔值,代表是否自动添加时间字段。
①框架默认会操作表中的created_at
、updated_at
、deleted_at
时间字段(添加时间、修改时间、软删除时间),如果设置为false
,表示不要操作这些字段。
②如果实际字段名称不是created_at
等默认名称,则通过以下方式指定:
// 定义类常量
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
const DELETED_AT = 'delete_time';
③时间字段格式,默认为日期时间格式Y-m-d H:i:s
,可以通过以下方式修改:
protected $dateFormate = 'Y-m-d';
// 或
protected $dateFormate = 'U';//U 表示Unix时间戳格式
第四:定义$fillable
属性,表示允许添加或修改到数据库的字段信息。
①主键和时间字段不需要设置;后续使用模型的create
方法添加数据时,必须定义$fillable
②$fillable
属性相当于白名单,也可以设置$guarded
属性,排除入库的字段,相当于黑名单。
protected $guarded = ['price','number'];
但是$fillable
和$guarded
属性不能同时使用。
四、视图
-> 模板的定义
常用定义规则:/resources/views/模块名目录/控制器名目录/模板文件名+模板后缀
框架内置了blade模板引擎,默认视图文件后缀是.blade.php
。
-> 模板渲染及赋值
在控制器方法中,进行模板渲染和模板赋值:
return view(模板名称, 变量数组);
// 或
return view(模板名称)->with(变量数组);
// 或
return view(模板名称)->with(变量名1,变量值1)->with(变量名2,变量值2);
对模板进行分模块管理后,这里的模板名称,需要包含resources/views/
目录下的子目录名,分隔符可以为/
或者.
语法示例:
return view('admin.index.index', ['id' => 1, 'name' => 'hsz']);
// 或
return view('admin.index.index')->with('id', 1)->with('name', 'hsz');
-> compact函数
-> 模板中变量输出
①{{变量}}
原样输出
②{!!变量!!}
解析html输出
-> 内置标签if和foreach
blade模板引擎内置了过程控制语法标签,常用的有if标签和foreach标签
①if标签 进行条件判断
双分支
@if(...)
...
@else
...
@endif
多分支
@if()
@elseif()
@elseif()
@else
@endif
②foreach标签 遍历数组或对象
@foreach($data as $v)
{{$v[‘id’]}} ---- {{$v[‘name’]}} <br/>
@endforeach