resource
方法定义用户资源路由
Route::resource('users','UsersController');
resource
方法遵从RESTful框架为用户资源生成路由。该方法接收两个参数,第一个参数为资源名称,第二个参数为控制器名称。
HTTP请求 | URL | 动作 | 作用 |
---|---|---|---|
GET | /users | Userscontroller@index | 显示所有用户列表的页面 |
GET | /users/{user} | UsersController@show | 显示用户个人信息的页面 |
GET | /users/create | UsersController@create | 创建用户的页面 |
POST | /users | UsersController@store | 创建用户 |
GET | /users/{user}/edit | UsersController@edit | 编辑用户个人资料的页面 |
PATCH | /users/{user} | UsersController@update | 更新用户 |
DELETE | /users/{user} | UserController@destroy | 删除用户 |
Laravel会自动解析定义在控制器方法中的Eloquent模型类型生命。在上面代码中,由于
show()
方法传参时声明了类型Eloquent模型User
,对应的变量名$user
会陪陪路由片段中的{user}
,这样Lrarvel会自动注入与请求RUI中传入的ID对应的用户模型实例。此功能称为隐性路由模型绑定:
1. 路由声明时必须使用Eloquent模型的单数小写格式来作为路由片段参数,User对应{user}
:
Route::get('/users/{user}','UsersController@show')->name('users.show');
- 控制器方法传参中必须包含对应的Eloquent模型类型声明,并且是有序的:
public function show(User $user)
{
return view('users.show',compact('user'));
}
Gravatar 头像和侧边栏
Gravatar 为 “全球通用头像”,当你在 Gravatar 的服务器上放置了自己的头像后,可通过将自己的 Gravatar 登录邮箱进行 MD5 转码,并与 Gravatar 的 URL 进行拼接来获取到自己的 Gravatar 头像。
1. 在用户模型中定义一个gravatar
方法,用来生成用户的头像
app/Models/User.php
public function gravatar($size = '100')
{
$hash = md5(strtolower(triim($this->attributes['email'])));
return "Http://www.gravatar.com/avtar/$hash?s=$size";
}
该方法主要做了以下几个操作:
1. 为gravatar方法传递的参数size
指定了默认值100;
2. 通过$this->attributes['email']
获取到用户的邮箱;
3. 使用trim
方法将邮箱转换为小写
4. 用strtolower
方法将邮箱转换为小写
5. 将小写的邮箱使用md5方法进行转码;
6. 将转码后的邮箱与连接、尺寸拼接成完整的URL并返回
- 在视图中通过以下方式进行调用
- 使用默认尺寸来获取头像
$user->gravatar();
- 为
gravatar
指定尺寸大小来获取头像
$user->gravatar('140');