第1章 为什么使用Laravel 1
为什么要使用框架 1
“自己动手做” 2
一致性和灵活性 2
Web和PHP框架简史 2
Ruby on Rails 2
PHP框架的涌入 3
CodeIgniter的优点与缺点 3
Laravel 1、Laravel 2和Laravel 3 3
Laravel 4 4
Laravel 5 4
Laravel有什么特别之处 4
Laravel的哲学 4
Laravel如何让开发者快乐 5
Laravel社区 6
Laravel是如何工作的 6
为什么使用Laravel 9
第2章 搭建Laravel的开发环境 11
系统要求 11
Composer 11
本地开发环境 12
Laravel Valet 12
Laravel Homestead 13
创建一个新的Laravel项目 17
使用Laravel安装工具来安装Laravel 17
通过Composer的create-project来安装Laravel 17
Laravel的目录结构 18
文件夹 18
文件 19
配置 19
启动和运行 20
测试 21
本章小结 21
第3章 路由和控制器 23
路由定义 23
路由动词(Verb) 25
路由处理 25
路由参数 26
路由名称 27
路由组 30
中间件 30
路径前缀 31
子域名路由 32
命名空间前缀 33
名称前缀 33
视图 33
使用视图Composer在每个视图中共享变量 35
控制器 35
获取用户输入 38
将依赖注入控制器 39
资源控制器 40
路由模型绑定 42
隐式路由模型绑定 42
自定义路由模型绑定 43
路由缓存 44
表单方法欺骗(Form Method Spoofing) 44
HTTP动词的介绍 44
Laravel中的HTTP动词 45
在HTML表单中进行HTTP方法欺骗 45
CSRF保护 45
重定向 47
redirect()->to() 48
redirect()->route() 48
redirect()->back() 49
其他重定向方法 49
redirect()->with() 49
中止请求 51
自定义响应 51
response()->make() 51
response()->json()和->jsonp() 52
response()->download()和->file() 52
测试 52
本章小结 53
第4章 Blade模板 55
输出数据 56
控制结构 56
条件语句 57
循环语句 57
or 59
模板继承 60
用@section/@show和@yield定义Section 60
@parent 62
@include 62
@each 63
视图Composer和服务注入 63
用视图Composer绑定数据到视图 64
Blade服务注入 67
自定义Blade指令 68
自定义Blade指令中的参数 69
示例:对多租户应用程序(Multitenant App)使用自定义Blade指令 70
测试 71
本章小结 72
第5章 前端组件 73
Elixir 73
Elixir文件夹结构 75
运行Elixir 75
Elixir提供了什么 76
分页 82
分页数据库结果 82
手动创建分页 83
消息包 84
错误包命名 85
字符串助手、多元化和本地化 86
字符串助手和多元化 86
本地化 87
测试 89
用Elixir进行测试 89
测试消息包和错误包 90
翻译和本地化 90
本章小结 90
第6章 收集和处理用户数据 91
注入请求对象 91
$request->all() 92
$request->except()和$request->only() 92
$request->has()与$request->exists() 93
$request->input() 93
数组输入 94
JSON输入($request->json()) 94
路由数据 96
通过Request实现 96
通过路由参数实现 96
上传的文件 96
验证 99
在控制器中使用ValidatesRequests的validate()方法 99
手动验证 102
显示验证错误信息 102
表单请求 103
创建表单请求 103
使用表单请求 104
Eloquent模型质量分配 105
{{与{!! 106
测试 106
本章小结 107
第7章 Artisan和Tinker 109
Artisan入门 109
Artisan的基本命令 110
选项 110
组合命令 111
书写常见的Artisan命令 113
注册命令 115
示例命令 116
参数和选项 117
输入 118
提示 120
输出 121
在其他代码中调用Artisan命令 122
Tinker 123
测试 124
本章小结 125
第8章 数据库和Eloquent 127
配置 127
数据库连接 127
其他数据库配置选项 129
迁移 129
定义迁移 129
运行迁移 137
填充 138
创建填充器 138
模型工厂 139
查询构造器 143
DB Facade的基本使用 143
原始SQL语句 144
查询构造器链 145
事务 153
Eloquent入门 154
新建和定义Eloquent模型 156
通过Eloquent获取数据 157
Eloquent的插入和更新 159
Eloquent中的删除 162
作用域 164
自定义与访问器、修改器和属性转换器的字段交互 167
Eloquent集合 171
Eloquent序列化 173
Eloquent关系 175
通过子类更新父类时间戳 186
Eloquent事件 188
测试 189
本章小结 191
第9章 用户认证和授权 193
用户模型和迁移 194
使用auth()全局助手和认证Facade 197
Auth控制器 197
RegisterController 197
LoginController 199
ResetPasswordController 200
ForgotPasswordController 200
Auth::routes() 200
认证脚手架(Auth Scaffold) 201
“记住我” 202
手动认证用户 203
认证中间件 204
保护 204
修改默认保护 205
在不改变默认情况下使用其他保护 205
添加新的保护 205
创建自定义用户提供器 206
为非关系型数据库自定义用户提供器 207
认证事件 207
授权(ACL)和角色 208
定义授权规则 208
Gate facade(和注入Gate) 209
Authorize中间件 210
控制器授权 210
检查用户实例 212
Blade检查 213
插入检查 213
政策 214
测试 216
本章小结 218
第10章 请求和响应 221
Laravel请求的生命周期 221
引导应用程序 222
服务提供者 223
Request对象 224
在Laravel中获取请求对象 225
获取请求的基本信息 225
持久性 228
Response对象 228
在容器中使用和创建Response类 229
特殊的响应类型 230
Laravel和中间件 233
中间件入门 233
创建自定义中间件 234
绑定中间件 236
向中间件传参 239
测试 240
本章小结 241
第11章 容器 243
依赖注入简介 243
依赖注入和Laravel 245
app()全局助手 245
容器如何连接 246
将类绑定到容器 247
绑定到闭包 247
绑定单例模式、别名和实例 248
将具体实例绑定到接口 249
语境绑定 250
构造器注入 250
方法注入 251
facade与容器 252
facade如何工作 252
服务提供者 254
测试 254
本章小结 255
第12章 测试 257
测试基础 258
命名测试 260
测试环境 261
测试特性 262
没有中间件 262
数据库迁移 262
数据库事务 263
应用程序测试 263
测试用例 263
“访问”路径 264
自定义应用测试断言 266
JSON和Non-visit()应用测试断言 267
点击和表单 271
任务和事件 273
认证和会话 273
Artisan和Seed 274
mock(模拟) 275
Mockery 275
模拟facade 278
本章小结 279
第13章 编写API 281
类REST JSON API基础 281
控制器组织和JSON返回 282
读取和发送头 286
在Laravel中发送响应头 287
在Laravel中读取请求头 287
Eloquent分页 287
排序和筛选 289
对API结果排序 289
过滤API结果 291
数据转换 292
编写自己的转换器 292
嵌套和关系 293
使用Laravel Passport的API认证 295
OAuth 2.0简介 295
安装Passport 296
Passport的API 297
Passport可用的授权类型 298
使用Passport API和Vue组件管理客户端和令牌 305
Passport作用域 307
Laravel 5.2以上版本的API令牌认证 309
测试 310
本章小结 311
第14章 存储和检索 313
本地和云端文件管理器 313
配置文件访问 313
使用存储facade 314
添加额外的Flysystem提供商 316
基本的文件上传和操作 317
会话 318
访问会话 318
会话实例的可用方法 319
闪存会话存储 321
高速缓存器cache 321
访问高速缓存 322
Cache实例中可用的方法 322
cookie 324
Laravel中的cookie 324
访问cookie工具 324
基于Laravel Scout全文搜索 327
安装Scout 327
标记索引模型 327
索引检索 328
队列和Scout 328
执行无索引操作 328
通过代码手动触发索引 329
利用CLI手动触发索引 329
测试 329
文件存储 329
会话 331
高速缓存 332
cookie 332
本章小结 334
第15章 邮件和通知 335
邮件 335
“classic”邮件 336
基本“mailable”邮件 336
邮件模版 339
build()中可用的方法 339
附件和内联图片 340
队列 341
本地开发 342
通知 344
为通知对象定义via()方法 346
发送通知 347
排队通知 348
开箱即用的通知类型 348
测试 351
邮件 351
通知 352
本章小结 352
第16章 队列,任务,事件,广播及调度程序 353
队列 353
为什么使用队列 354
基本队列配置 354
队列任务 354
运行队列工作者 358
错误处理 358
控制队列 361
支持其他功能的队列 361
事件 362
触发事件 362
监听事件 364
通过WebSocket广播事件及Laravel Echo 367
配置和设置 368
广播事件 368
接收消息 371
高级广播工具 372
Laravel Echo (JavaScript方面) 376
调度程序 379
可用任务类型 380
可用时间框架 380
阻塞和重叠 382
处理任务输出 382
任务钩子 383
测试 384
本章小结 385
第17章 助手和集合 387
助手 387
数组 387
字符串 389
应用路径 391
URL 392
Misc(宏指令结构技术体系) 394
集合 397
集合的基础 397
几种方法 399
本章小结 404
词汇表 405