我应该为两种不同的请求类型需要两种不同的操作

时间:2016-03-07 12:38:20

标签: silex

我尝试学习Silex。在我今天的步骤中,我想将用户通过注册表单保存到我的数据库中。

在我的第一步中,我创建了一个html表单" register.html":

<form action="/register-user" method="POST">
    <input type="text" name="username" class="form-control"  value="" />
    <input type="submit" name="register" class="btn btn-success" value="Send" />
</form>

此表单已在我的操作中呈现&#34;注册&#34;:

$app->get('/register', function() use ($app) {
        return $app['twig']->render('register.html', array());
    })->bind('register');

现在我发布我的表单并使用其他操作来处理此帖子请求,&#34;注册用户&#34;:

$app->post('/register-user', function(Request $request) use ($app) {
        var_dump($request->get('username'));
        return $app['twig']->render('register.html', array());
    })->bind('register-user');

我不确定这是不是正确的方法。有人可以给我一个提示,或者这是使用两种不同行为的正确方法吗?

我解决了我的问题: 我必须使用&#34;匹配&#34;而不是获取和发布。

$app->match('/register', function(Request $request) use ($app) {
});

1 个答案:

答案 0 :(得分:0)

不要在这里使用match()。您可以使用相同的资源&#39; / register&#39;来使用POST和GET操作。提交表单时,资源将收到POST请求,否则将是GET,您可以呈现登录表单。

$app->get('/register', function() use ($app) {
        return $app['twig']->render('register.html', array());
    })->bind('register_get');

$app->post('/register', function(Request $request) use ($app) {
        // process form information
    })->bind('register_post');