Php Slim 4放置和删除表单提交
如何在Slim 4中放置和删除表单提交?我有以下路线:Php Slim 4放置和删除表单提交,php,slim,slim-4,Php,Slim,Slim 4,如何在Slim 4中放置和删除表单提交?我有以下路线: $group->get('/sites/create', SitesController::class . ':create')->setName('sites_create'); $group->get('/sites/{id}/edit', SitesController::class . ':edit')->setName('sites_edit'); $group->post('/sites', Sit
$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中所做的
但是它不是去editSubmit方法,而是去createSubmit方法
如何使用这些方法提交?,您仍然可以使用POST
请求正文中的\u method
参数或使用X-Http-method-override
头来覆盖表单方法
重要的一点()是,您需要将Slim\Middleware\methodoverridemidleware
添加到应用程序中,以便能够覆盖表单方法
以下是一个完全有效的示例:
<?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();
谢谢。我可以发誓我读过一些关于必须在Slim 4中实现这一点的文章,但在我需要的时候却找不到。现在工作。我不认为你会看我的另一个Slim 4问题,它在中间件中有$response——你的分数加倍:)很高兴我能帮上忙。我确实看到了你的另一个问题,我认为它是重复的。请参阅对该问题的评论。