为了账号安全,请及时绑定邮箱和手机立即绑定

超薄 4 放置和删除表单提交

超薄 4 放置和删除表单提交

PHP
当年话下 2022-09-17 22:03:51
如何在 Slim 4 中执行 PUT 和删除表单提交?我有以下路线:$group->get('/sites/create', SitesController::class . ':create')->setName('sites_create');$group->get('/sites/{id}/edit', SitesController::class . ':edit')->setName('sites_edit');$group->post('/sites', SitesController::class . ':createSubmit')->setName('sites_create_submit');$group->put('/sites', SitesController::class . ':editSubmit')->setName('sites_edit_submit');这是我的:<form action="/sites" method="POST">    <label for="name">Site name</label>    <input type="text" class="form-control" id="name" name="name">                     <input type="hidden" name="_METHOD" value="PUT">    <button type="submit">Submit</button></form>这就是我在Slim 3中会如何做到的。但它不会转到编辑提交方法,而是转到创建提交方法。如何使用这些方法提交?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

根据 Slim 4 文档,您仍然可以使用请求正文中的参数或使用标头来覆盖表单方法。_METHODPOSTX-Http-Method-Override

重要的一点(来自文档)是你需要添加到你的应用才能覆盖表单方法。Slim\Middleware\MethodOverrideMiddleware

下面是一个完全有效的示例:

<?php


require __DIR__ . '/../vendor/autoload.php';


use Slim\Factory\AppFactory;


$app = AppFactory::create();

$app->addRoutingMiddleware();

$app->add(new Slim\Middleware\MethodOverrideMiddleware);


$app->get('/', function($request, $response){


    $form =<<<form

    <form action="/put" method="post">

        <input type="hidden" name="_METHOD" value="PUT"/>

        <button type="submit">Send PUT request</button>

    </form>

    <form action="/delete" method="post">

        <input type="hidden" name="_METHOD" value="DELETE"/>

        <button type="submit">Send DELETE request</button>

    </form>

form;


    $response->getBody()->write($form);

    return $response;

});


$app->put('/put', function($request, $response){

  $response->getBody()->write('The request method is: ' . $request->getMethod());

  return $response;

});

$app->delete('/delete', function($request, $response){

    $response->getBody()->write('The request method is: ' . $request->getMethod());

    return $response;

});


$app->run();


查看完整回答
反对 回复 2022-09-17
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信