2015-10-25 4 views
1

В Слим 2, я бы сделал это,Slim 3 - замена isPost()?

$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'); 

Но Слим 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) { 

     /// 
    } 

}); 

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

Fatal error: Function name must be a string in C:...

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

+1

Я думаю, что '$ запрос() -> isPost()' должен быть просто '$ request-> isPost() ', без паратетеза, во втором примере кода. '$ request' - это объект. –

+1

Кроме того, метод 'isPost' по-прежнему доступен в соответствии с документами: http://www.slimframework.com/docs/objects/request.html#the-request-method –

+0

получил его. Спасибо, парни. – laukok

ответ

1

Согласно documentation и comments, Слим поддерживает эти запатентованные методы:

  • $ request-> isGet()
  • $ request-> isPost()
  • $ request-> isPut()
  • $ request-> isDelete()
  • $ request-> isHead()
  • $ request-> isPatch()
  • $ request-> 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(); 
+1

Спасибо за подробный ответ! : D – laukok

Смежные вопросы