PHP Slim Framework - несколько методов HTTP - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь маршрутизировать несколько методов 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 ]

2 голосов
/ 28 апреля 2012

Если вы не хотите, чтобы почтовый маршрут игнорировался 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

2 голосов
/ 22 марта 2012

Вам нужно изменить первую функцию, добавить в нее следующий код для обнаружения методов post / get:

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