[Laravel] 02 - Route and MVC

前言


1、良心资料

  • 英文

Laravel 框架:https://laravel.com/php

 
  • 中文

轻松学会Laravel-基础篇   <---- from.html

轻松学会Laravel-中级篇laravel

轻松学会Laravel-高级篇正则表达式

 

 

基本路由


1、基本思路 

  • 默认框架结构

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 -- 依赖模块

 

  • 路由示范

基础路由,多请求路由,示范以下:bootstrap

多请求路由:mvc

Route::match 既支持get,也支持post;app

Route::any 响应全部的请求;框架

 

详见API中文文档:https://docs.golaravel.com/docs/5.0/routing/函数

Ref: [Node.js] 07 - Html and Http

 

 

2、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');

 

 

 

控制器


1、控制器关联路由

  • 关联方法: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。

 

 

 

视图


1、如何使用 view

URL --> [映射] --> 程序 --> 界面

在resource/views中,例如创建:member-info.php这个view文件。

那么,咱们就能够经过 return view('member-info'); 来使用。 

 

[1] 控制器 Controller 带有参数:name & age。

 

[2] 视图 View 显示参数内容。 

 

 

 

模型


1、新建一个模型 

在app目录下新建:Member.php

 

 

2、如何调用模型

由于是静态方法,因此能够直接在 Controller 中调用 Model方法。