我正在尝试路由多个 HTTP 方法(GET 和 POST)来显示相同的内容。例如,我有一个注册页面:
$app->map('/admin/register', function () use ($app) {
$app->render('/admin/register.twig');
})->via('GET', 'POST');
这将在 GET 和 POST 请求时显示注册表单。然后我想指定在 POST 上发生的“额外的事情”。
$app->map('/admin/register', function () use ($app) {
$app->render('/admin/register.twig');
})->via('GET', 'POST');
$app->post('/admin/register', function () use ($app) {
// Validate register information
});
但是,第二个函数被忽略。我想这样做,以便我可以在注册表上方显示错误消息。我将如何实现这一目标?
最佳答案
如果您不希望 Slim 忽略发布路线,则需要在通用 map route 使用“pass”助手,如下所示:
$app->map('/admin/register', function () use ($app) {
if($app->request()->isPost()) {
$app->pass();
}
$app->render('/admin/register.twig');
})->via('GET', 'POST');
$app->post('/admin/register', function () use ($app) {
// Validate register information
});
这是有关它的文档:http://www.slimframework.com/documentation/develop#routing-helpers-pass
关于PHP Slim 框架 - 多种 HTTP 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805682/