Я пытаюсь создать расширение 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 — как я могу получить эти значения?
Это всего лишь вопрос понимания процесса Запрос / Ответ в 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) {
........
}
}
Это должно указать вам в правильном направлении.
Других решений пока нет …