Slim 3 - замена isPost()?

В Slim 2 я бы сделал так,

$app->map('/login', function () use ($app) {

    // Test for Post & make a cheap security check, to get avoid from bots
    if ($app->request()->isPost() && sizeof($app->request()->post()) >= 2) {

        //
    }

    // render login
    $app->render('login.twig');

})->via('GET','POST')->setName('login');

Но в Slim 3,

// Post the login form.
$app->post('/login', function (Request $request, Response $response, array $args) {

    // Get all post parameters:
    $allPostPutVars = $request->getParsedBody();

    // Test for Post & make a cheap security check, to get avoid from bots
    if ($request()->isPost() && sizeof($allPostPutVars) >= 2) {

        ///
    }

});

Я получаю эту ошибку,

Неустранимая ошибка: имя функции должно быть строкой в ​​C:...

Очевидно, что isPost() устарел, так что же мне использовать вместо этого в Slim 3 для замены isPost?


person laukok    schedule 25.10.2015    source источник
comment
Я думаю, что $request()->isPost() должно быть просто $request->isPost(), без скобок, во втором примере кода. $request является объектом.   -  person Gustavo Straube    schedule 25.10.2015
comment
Кроме того, метод isPost по-прежнему доступен в соответствии с документацией: slimframework .com/docs/objects/request.html#the-request-method   -  person Gustavo Straube    schedule 25.10.2015
comment
понятно. Спасибо, парни.   -  person laukok    schedule 26.10.2015
comment
Если вы сделаете $app->post(…) каждый запрос к этой публикации, запрос на получение не будет сопоставлен с этим.   -  person danopz    schedule 27.10.2015


Ответы (1)


Согласно документации и комментарии, Slim поддерживает следующие проприетарные методы:

  • $запрос->isGet()
  • $запрос->isPost()
  • $запрос->isPut()
  • $запрос->isDelete()
  • $запрос->isHead()
  • $запрос->isPatch()
  • $запрос->isOptions()

Вот пример использования:

<?php
require 'vendor/autoload.php';

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;

$app = new \Slim\App;
$app->map(['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'PATCH', 'OPTIONS'], '/', function (ServerRequestInterface $request, ResponseInterface $response) {
    echo "isGet():" . $request->isGet() . "<br/>";
    echo "isPost():" . $request->isPost() . "<br/>";
    echo "isPut():" . $request->isPut() . "<br/>";
    echo "isDelete():" . $request->isDelete() . "<br/>";
    echo "isHead():" . $request->isHead() . "<br/>";
    echo "isPatch():" . $request->isPatch() . "<br/>";
    echo "isOptions():" . $request->isOptions() . "<br/>";

    return $response;
});

$app->run();
person Davide Pastore    schedule 29.10.2015
comment
Спасибо за подробный ответ! :D - person laukok; 29.10.2015