[Laravel] 02 - Route and MVC
前言
一、良心资料
- 英文
Laravel 框架:https://laravel.com/
- 中文
轻松学会Laravel-基础篇 <---- from.
基本路由
一、基本思路
- 默认框架结构
URL --> [映射] --> 程序
app -- Https 业务逻辑
-- Http/routes.php【返回 (1) view --> resources/views/welcome.blade.php】
bootstrap -- 框架启动,自动加载
-- autoload.php【加载 (1) /../vendor/autoload.php】
-- app.php【实例化 (2) app and then return $app】
config -- 配置文件,such as cache.
database -- 数据库相关资源
public -- 静态资源, such as pic.
-- index.php【加载 (1) /../bootstrap/autoload.php then (2) app.php】
resources -- 视图以及原始的资源文件,views就是mvc中的v
-- views/welcome.blade.php【显示的首页 (2) html内容】
storage -- 编译后的模板文件等。
tests -- 单元测试。
vendor -- 依赖模块
- 路由示范
基础路由,多请求路由,示范如下:
多请求路由:
Route::match 既支持get,也支持post;
Route::any 响应所有的请求;
详见API中文文档:https://docs.golaravel.com/docs/5.0/routing/
Ref: [Node.js] 07 - Html and Http
二、URL 处理
- 路由 '参数'
[1] Extract id in url.
Route::get('user/{id}', function($id) { return 'User-id-' . $id; });
[2] Extract name? in url. sean是默认参数。【有默认参数就加了个问号】
Route::get('user/{name?}', function($name = 'sean') { return 'User-name-' . $name; });
[3] 正则表达式限制路由参数。
Route::get('user/{name?}', function($name = 'sean') { return 'User-name-' . $name; }) -> where('name', '[A-Za-z]+');
[4] 参数综合起来
Route::get('user/{id}/{name?}', function($id, $name = 'sean') { return 'User-id-' . $id . '-name' . $name; }) -> where(['id' => '[0-9]+', 'name', '[A-Za-z]+');
- 路由 ’重定向’ 与 ‘别名’
** "重定向" 的意思是?
当用户访问 /a
时,URL 将会被替换成 /b
,然后匹配路由为 /b.
if ($student->save()) { return redirect('student/index'); } else { return redirect()->back(); }
** “别名”又是什么呢?
/a
的别名是 /b
,意味着,当用户访问 /b
时,URL 会保持为 /b
,但是路由匹配则为 /a
,就像用户访问 /a
一样。【两个URL对应一个页面】
『别名』的功能让你可以自由地将 UI 结构映射到任意的 URL,而不是受限于配置的嵌套路由结构。
"member-center" 的别名为 “center"。
显示效果:
- 路由群组
有了层级关系。
./member/user/center就可以访问了。
- 路由中输出视图
其实就是之前的 return view('welcome');
控制器
一、控制器关联路由
- 关联方法:URL --> [映射] --> 程序
MembrConroller 里的方法 info()的表达方式:MemberController@info
Route::get('member/info', 'MemberController@info');
Or array type:
Route::get('member/info', ['uses' => 'MemberController@info']
- 路由别名
[routes.php]
- 参数绑定
[1] 打开路由,调用一个远在另一个文件夹的函数。
Route::any('member/{id}', ['uses' => 'MemberController@info']);]
[2] 函数在这里,就是controller。
视图
一、如何使用 view
URL --> [映射] --> 程序 --> 界面
在resource/views中,例如建立:member-info.php这个view文件。
那么,我们就可以通过 return view('member-info'); 来使用。
[1] 控制器 Controller 带有参数:name & age。
[2] 视图 View 显示参数内容。
模型
一、新建一个模型
在app目录下新建:Member.php
二、如何调用模型
因为是静态方法,所以可以直接在 Controller 中调用 Model方法。