0

REST エンドポイント経由でログインできるように、Bolt 拡張機能を作成しようとしています。しかし、リクエストから値を取得できません。

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、POST データとして送信されたにもかかわらず、これらが両方とも NULL であることがわかります。これらの値を取得するにはどうすればよいですか?

4

1 に答える 1

2

これは、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) {
        ........
    }
}

それはあなたを正しい方向に向けるはずです。

于 2014-12-28T06:19:43.553 に答える