Сбор данных POST с помощью Silex / Bolt

Я пытаюсь создать расширение Bolt, чтобы иметь возможность войти через конечную точку REST. Но я не могу захватить значения из запроса.

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

public function initialize()
{
$this->app->post("/rest/session", array($this, 'rest_login'))
->bind('rest_login');
}

public function rest_login(Request $request) {

// Get credentials
$username = $request->get('username');
$password = $request->get('password');

// Attempt login
$login = $this->app['users']->login($username, $password);
$response = $this->app->json(array('login' => $login));
return $response;
}

Если я вернусь после получения $username а также $password Я вижу, что они оба равны NULL, даже если они были отправлены как данные POST — как я могу получить эти значения?

0

Решение

Это всего лишь вопрос понимания процесса Запрос / Ответ в Silex. Метод инициализации в вашем расширении запускается до начала цикла запроса, для доступа к нему необходимо зарегистрировать контроллер, который затем может настроить маршруты для обработки запросов. Вот простой пример.

// In Extension.php
public function initialize() {
$this->app->mount('/', new ExampleController());
}

// In ExampleController.php
class ExampleController implements ControllerProviderInterface
{

public function connect(Silex\Application $app)
{
$ctr = $app['controllers_factory'];
$ctr->post("/rest/session", array($this, 'rest_login'))
->bind('rest_login');
}

public function rest_login(Request $request) {
........
}
}

Это должно указать вам в правильном направлении.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector