利用 Laravel 内置异常,抛出带视图或指定 JSON,统一化前端通知和成功失败页面
具体参照下面代码
use Illuminate\Http\Request;
use Illuminate\Http\Exception\HttpResponseException;
use Illuminate\Http\JsonResponse;
trait WebMessageTrait {
protected function fail($msg, array $urls = [], $auto = true, $code = '200') {
$data = [
'msg' => $msg,
'urls' => $urls,
'status' => false,
];
return $this->response($data, $auto, $code);
}
protected function success($msg, array $urls = [], $auto = true, $code = '200') {
$data = [
'msg' => $msg,
'urls' => $urls,
'status' => true,
];
return $this->response($data, $auto, $code);
}
private function response($data, $auto, $code) {
$request = app(Request::class);
if ($request->ajax() || $request->wantsJson()) {
$response = new JsonResponse($data, $code);
} else {
$view = view('msg.show', ['data' => $data, 'auto' => (boolean) $auto]);
$response = response($view, $code);
}
throw new HttpResponseException($response);
}
}
在App/Http/Controllers/Controller.php 引用Trait,然后在控制调用$this->fail('XXX')
或者$this->success('xxx')
就可以用了(根据自己的逻辑写模板的和数据的调用)