利用 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')就可以用了(根据自己的逻辑写模板的和数据的调用)

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!