是不是应该加上 `optional ($sku)`?

function ($attribute, $value, $fail) {
                    if (!$sku = ProductSku::find($value)) {
                        $fail('该商品不存在');
                    }
                    if (!$sku->product->on_sale) {
                        $fail('该商品未上架');
                    }
                    if ($sku->stock === 0) {
                        $fail('该商品已售完');
                    }
                    // 获取当前索引
                    preg_match('/items\.(\d+)\.sku_id/', $attribute, $m);
                    $index  = $m[1];
                    // 根据索引找到用户所提交的购买数量
                    $amount = $this->input('items')[$index]['amount'];
                    if (is_int($amount) && $amount > $sku->stock) {
                        $fail('该商品库存不足');
                    }
                },

在这个闭包验证当中, 如果 !$sku = ProductSku::find($value) 为真,那么 $sku 就等于 null ,于是到 $sku->product->on_sale 会报错 Trying to get property of non-object 是不是应该加上 optional($sku)?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
leo
最佳答案

@dptms 这里是疏忽了,在调用 $fail 之后应该再加上 return; 退出这个回调

5年前 评论
讨论数量: 3

$fail('该商品不存在'); 也不会往下进行了吧

5年前 评论

@Ken 我在尝试的过程中 往下进行了

5年前 评论
leo

@dptms 这里是疏忽了,在调用 $fail 之后应该再加上 return; 退出这个回调

5年前 评论

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