1.例如,发短信验证手机号
<?php
namespace App\Api\Controllers\v1;
use App\Api\Controllers\BaseController;
use App\Contracts\Send\Work\SendWork\AliYunMessage;
use App\Contracts\Template\Work\TemplateWork\LoginMessage;
use App\Contracts\Template\Work\TemplateWork\PasswordMessage;
use App\Http\Requests\SendMessage;
class SendController extends BaseController
{
public function send(SendMessage $request)
{
$phone = $request->get('phone');
$ali = new AliYunMessage();
$loginTemplate = new LoginMessage();
$passwordTemplate = new PasswordMessage();
$ali->setTemplate($loginTemplate);
$ali->send($phone);
}
}
2.创建SendMessage文件
php artisan make:request SendMessage
3.SendMessage文件代码
<?php
namespace App\Http\Requests;
use App\Rules\isPhone;
class SendMessage 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()
{
return [
'phone' => ['required',new isPhone()],
];
}
public function messages()
{
return [
'phone.required' => '手机号不能为空'
];
}
}
4.自定义返回的状态码和错误信息(继承的Request文件)
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
class Request extends FormRequest
{
protected function failedValidation(Validator $validator)
{
$error = $validator->errors()->all();
throw new HttpResponseException(response()->json(['code'=>400,'msg'=>$error[0]]));
}
}
5.创建自定义的控制器(isPhone文件)
php artisan make:rule isPhone
6.isPhone文件内容
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class isPhone implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
$result = preg_match($rule,$value);
if($result){
return true;
}
return false;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return '手机号格式错误';
}
}
7.提示信息
8.到这里就结束了。