Product $product 为什么能直接获取到当前 id 的商品

public function show(Product $product, Request $request)
    {
        // 判断商品是否已经上架,如果没有上架则抛出异常。
        if (!$product->on_sale) {
            throw new \Exception('商品未上架');
        }

        return view('products.show', ['product' => $product]);
    }

url里面放的是id,为什么不用find就能直接获取到商品?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
leo
6年前 评论
讨论数量: 3
shubiao-yao

看调用show方法的地方

6年前 评论
long2ge

这样子写有一个缺陷。
假如我在地址栏输入一个很大的数(例如http://shop.test/products/10000),就会跳转到Page Not Found页面而不是错误页面。
可以改成这样子写。


public function show(int $product, Request $request)
    {
        $product = Product::find($product);
        // 判断商品是否已经上架,如果没有上架则抛出异常。
        if (!$product || !$product->on_sale) {
            throw new InvalidRequestException('商品未上架');
        }
        .
        .
        .
    }

这样子在地址栏输入一个很大的数就也会跳转到商品未上架的页面了。

6年前 评论

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