配置路由
php<?php
Route::controllers([
'auth' => 'Auth\AuthController',
]);
这种路由配置方式对应的路径方式是 访问的方式+方法名 如在浏览器中使用get方式去访问register方法 那么这个路由会自动配置到这个类下面的getRegister方法。post也是一样
建立一个自己的注册页面
我在AuthControlle里建立一个自己的视图
php<?php
public function getRegister(){
return view("auth.register");
}
上面已经说了路由的解析方式 只要配好路由就可以了
我们需要定义一个处理这个的注册处理类
接下来我会把所有的代码贴出来再代码中去讲解怎么重写 同样这个文件位于AuthController下
php<?php
public function postRegister(UserRegisterRequest $req){
//验证通过 注册用户
$data = $req->all();
$data['register_ip'] = $req->ip();
$user = $this->registrar->create($data);
return redirect()->intended('/');
}
?>
大家会发现整个注册功能非常简单 那么具体可以在哪里做了注册的限制呢
其实是在UserRegisterRequest这个文件里去对所有填写的表单数据进行了控制
php<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
use Config;
class UserRegisterRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
//自定义的电话号码正则表达式
$regex = Config::get('constant.phone_number_regex');
return [
//对注册表单提交的信息进行验证
"username" => ['required','min:3','max:16','unique:users'],
"phone_number" => ['required','min:3','max:16','unique:users'],
"password" => ['required','min:6','max:16','confirmed'],
"verify_code" => ['required','digits:4'],
];
}
public function sanitize()
{
return $this->all();
}
}
我们可以通过laravel自带的php artisan make:request 创建一个请求类
这个类可以对所有请求的数据进行控制,在rule里面定义好规则就可以控制请求的的数据,如果符合规则那么会继续访问。
改写注册添加数据操作
注册的目的就是为了将符合条件的数据写入用户表中 既然改写了请求的数据 那么自然也要改写请求的操作
注册成功后添加到用户数据库中 是在上面的 postRegister中的这一段代码来实现的
php<?php
$user = $this->registrar->create($data);
找到这段代码 这段代码位于 services下的Registrar.php下
php<?php
public function create(array $data)
{
$properties = [
'username' => $data['username'],
'password' => bcrypt($data['password']),
'register_time' => Carbon::now()->toDateTimeString(),
'register_ip' => $data['register_ip']
];
return User::create($properties);
$user = new User();
$user->save();
}
将这个处理函数改成符合自己业务逻辑的函数就行了