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 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3
shubiao-yao

看调用show方法的地方

5年前 评论
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('商品未上架');
        }
        .
        .
        .
    }

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

5年前 评论

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