求助,定义了一个路由是 any,因为里面既有 get,又有 post,可是因为 get 有参数,post 就不成功


在这里如何才能成功实现post啊,因为$id的原因,不想单独写一个修改方法了

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
medz
最佳答案

顺便帮你优化下代码:

    public function edit(int $id) {
        return view('Admin.Menu.edit', [
            'arr' => DB::table('menu')->where('id', $id)->first(),
        ]);
    }

    public function store(Request $request) {
        DB::table('menu')->insert($request->only([
            'title', 'display', 'icon',
        ]));

        return response()->json([
            'code' => 1,
        ]);
    }

还有建议不要使用 DB::table 方法操作,用 Model 吧!

route 部分定义:

Route::get('/edit/{id}', 'MenuController@edit');
Route::post('/edit', 'MenuController@store');
3年前 评论
5663027 (楼主) 3年前
5663027 (楼主) 3年前
5663027 (楼主) 3年前
5663027 (楼主) 3年前
yxuefeng 3年前
kangfq 3年前
medz (作者) 3年前
讨论数量: 13

你既然可以用get 访问 /edit/id/1

post /edit/id/1也可以的吧

3年前 评论
5663027 (楼主) 3年前

理论上来说 post 请求也是可以的哦, 你说的不成功具体是什么情况

3年前 评论
5663027 (楼主) 3年前
zxdstyle (作者) 3年前
lyxxxh 3年前

你这个exit用的。。。

3年前 评论
5663027 (楼主) 3年前

报错信息 贴出来嘛,老哥 :grin:

3年前 评论

问问题都要有错误提示

3年前 评论

给控制器的id加一个默认值,当你用post的时候,程序会通过反射去获取id对应的值,你url没加就会报错:未传入参数

3年前 评论
medz

file 你基础不行呀!可选参数给个必须传递的方式。框架的 IoC 咋个传?

3年前 评论
medz (作者) 3年前
medz (作者) 3年前
5663027 (楼主) 3年前
medz

顺便帮你优化下代码:

    public function edit(int $id) {
        return view('Admin.Menu.edit', [
            'arr' => DB::table('menu')->where('id', $id)->first(),
        ]);
    }

    public function store(Request $request) {
        DB::table('menu')->insert($request->only([
            'title', 'display', 'icon',
        ]));

        return response()->json([
            'code' => 1,
        ]);
    }

还有建议不要使用 DB::table 方法操作,用 Model 吧!

route 部分定义:

Route::get('/edit/{id}', 'MenuController@edit');
Route::post('/edit', 'MenuController@store');
3年前 评论
5663027 (楼主) 3年前
5663027 (楼主) 3年前
5663027 (楼主) 3年前
5663027 (楼主) 3年前
yxuefeng 3年前
kangfq 3年前
medz (作者) 3年前

laravel注册any路由的情况可能大多数是在其他服务平台的回调路由中,比如支付宝或者微信,老哥的代码确实需要提高一下...我要是你同事我反手就重写了..

3年前 评论
medz 3年前
kangfq (作者) 3年前
xiaopi

建议使用资源路由,restful风格便于维护,可以参考下控制器《Laravel 6 中文文档》

3年前 评论

手动路由简直各种花样,我个人觉得很麻烦,很影响写代码流畅感。我改成自动路由了,然后在控制器实例化的时候用私有变量获取input值,需要的方法直接调用就好了。

3年前 评论

你这个代码太糟糕了,建议挥刀自宫

3年前 评论

其实你可以买本论坛的laravel入门教程看看,你的代码质量能够快速提高的。

3年前 评论
Neymar (作者) 3年前
5663027 (楼主) 3年前

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