1

複数の 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
});

ただし、2 番目の関数は無視されています。登録フォームの上にエラーメッセージを表示できるように、これを行いたいと思います。これを達成するにはどうすればよいですか?

4

2 に答える 2

2

post/get メソッドを検出するには、最初の関数を変更し、次のコードを追加する必要があります。

if ( $app->request()->isPost() ){
echo 'Post request';
}
于 2012-03-22T11:31:17.143 に答える
2

post ルートが Slim に無視されないようにするには、次のように、一般的なマップ ルートで '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

于 2012-04-28T04:47:28.800 に答える