请问在 service 层,如何直接返回 return response?

在service层如何直接返回 return response('XXXXX(提示信息)', 400);?
如果不能,那我这样封装是否合理?
StorageController.php

class StorageController extends Controller {

    protected $storageService;
    public function __construct(StorageService $storageService)
    {
        $this->storageService = $storageService;
    }
    public function addOutplace(Request $request ){
        $res = $this->storageService->checkOutplacePost($request);
        if(!$res['status']){
            return $res['message'];
        }
    }
}

StorageService.php

class StorageService{
    public function checkOutplacePost($request)
    {
            if (!$request->order_no) {
                $res['message'] = response(trans('請輸入正確單號'), 400);
                $res['status'] = false;
                return $res;
            }
    }
}
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
leo
最佳答案

Service 层抛异常,不会直接返回数据

5年前 评论
belmmet 4年前
leo (作者) 4年前
belmmet 4年前
讨论数量: 7
leo

Service 层抛异常,不会直接返回数据

5年前 评论
belmmet 4年前
leo (作者) 4年前
belmmet 4年前

@Tango 我会在 Controller 里捕获异常,Service 层抛出异常。可以通过抛出不同的异常返回不同的 response 。

5年前 评论

@halweg 可以在 Service 中定义错误方法,然后在 Controller 里面获取错误内容

  /**
     * 错误代码
     * @var int
     */
    protected $errorCode;

    /**
     * 错误信息
     * @var string
     */
    protected $errorMessage = '';

    /**
     * 返回错误代码
     * @return int
     */
    public function getErrorCode()
    {
        return $this->errorCode;
    }

    /**
     * 返回错误信息
     * @return string
     */
    public function getErrorMessage()
    {
        return $this->errorMessage;
    }
5年前 评论

请问,你后来是怎么处理这种情况的

5年前 评论

@dmdoit server里抛出,控制器里捕捉异常

5年前 评论
belmmet 4年前

请问后来怎么处理的呢

4年前 评论
halweg (楼主) 4年前
belmmet (作者) 4年前

请问 services 里面能调用另外一个 services 嘛?

4年前 评论
halweg (楼主) 4年前

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