Slim, как взять данные поста из формы с загрузкой файла?

Как взять данные поста с помощью slim. у меня есть вызов функции, как это

$this->app->post("/post/create", array($this, "createPost")); я хочу получить данные сообщения из формы php html. я принял такой запрос

$request = \Slim\Slim::getInstance()->request();

и взял данные поста вот так

$userId = $_POST["user"];
$content = $_POST["content"];
$datetime = $_POST["date"];
$filename = $_FILES["image"]["name"];
$type = $_FILES["image"]["type"];
$size = $_FILES["image"]["size"];
$filetmpname = $_FILES["image"]["tmp_name"];

Это правильный способ сделать?


person Naveenbos    schedule 12.03.2014    source источник


Ответы (3)


Вы можете сделать это следующим образом:

$this->app = new \Slim\Slim();

$this->app->post("/post/create", function () {

    $userId = $this->app->request->post('user');

    // or

    $allPostVars = $this->app->request->post();
    $userId = $allPostVars['user'];
    //...

});

если вы не хотите использовать анонимную функцию ("Невозможно использовать $this из анонимной функции до PHP 5.4.0"), я думаю, вы можете просто сделать:

$this->app->post("/post/create", 'createPost');


function createPost() {
        $userId = $this->app->request->post('user');
        //...
}
person MamaWalter    schedule 12.03.2014

если вы используете Slim 3.*, вы можете сделать это так:

$app->post('/users', function ($request, $response) {
   $formDataArry = $request->getParsedBody();
    // do something with formDataArry 
});
person jekele    schedule 12.03.2016
comment
из getParsedBody мы также можем получить загруженный файл...? - person gumuruh; 09.07.2018

Если вы используете Slim 3:

<?php
namespace Vendor\Product\Classes;

use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;

class LoginController
{
  public function loginUser(Request $request, Response $response)
  {
        $username = $request->getParam('username');
        $password = $request->getParam('password');

        // Logic to validate login ommited.
  }
}
person Guilherme Melo    schedule 01.04.2016