2012-03-21 14 views
1

同じコンテンツを表示するために複数のHTTPメソッド(GETとPOST)をルーティングしようとしています。たとえば、私は登録ページを持っています:PHP Slimフレームワーク - 複数のHTTPメソッド

$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番目の機能は無視されています。私はこれを実行して、登録フォームの上にエラーメッセージを表示することができます。これを達成するにはどうすればいいですか?

答えて

2

あなたはポストルートはスリムで無視したくない場合は、あなたが使用する必要がありますそのようなあなたの一般的なマップのルートの「パス」のヘルパーを、:

$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

2

あなたはポスト/ getメソッドを検出することで、次のコードを追加し、第一の機能を変更する必要があります。

if ($app->request()->isPost()){ 
echo 'Post request'; 
}