1

私はSymfony2にかなり慣れていないので、これを行うための好ましい方法は何でしょうか

フォームデータの受信と処理を含む管理アクションがたくさんあります。当然、処理が終了すると、コントローラーアクションはを送信しますreturn $this->redirect($this->generateUrl('.....'));

ブラウザがサポートしている場合にajaxを介してフォームを送信するJavaScriptを作成したので、リクエストがajaxを介して送信された場合に限り、Responseオブジェクトを含むオブジェクトを返すようにコントローラーアクションを変更する必要があります。json array

  1. コントローラに送信されたリクエストがAJAXリクエストであるかどうかを認識することは可能ですか?

  2. ResponseHandlerディレクトリツリーのどこに、リクエストのタイプに基づいてjson配列をリダイレクトまたは返すという名前のクラスを配置するのに適した場所がありますか?Symfony2はこれらのことに非常に厳しいことに気づいたので、最初から正しく理解したいと思います。たぶん、これに対するソリューションがすでにバンドルされているのでしょうか?

アップデート

コントローラで$this->getRequest-> isXmlHttpRequest()を使用できることがわかりました。

質問2はまだ残っています。

4

1 に答える 1

0

ディレクトリツリーのどこに、リクエストのタイプに基づいてjson配列をリダイレクトまたは返すResponseHandlerという名前のクラスを配置するのが好ましい場所ですか?

AJAX 要求を行う場合、データをパラメーター、POST または GET パラメーターに格納します。コントローラーでこのパラメーターにアクセスするには、次のようにします。

// ...
public function finishAction()
{
    // if you use a GET request
    $data = $this->getRequest->query->get('my-get-parameter');
    // and if you use a POST request
    $data = $this->getRequest->request->get('my-get-parameter');

    // ... do something with the data
}

ただし、質問に答えるには:
symfony コア フレームワークはイベント ディスパッチャー コンポーネントを使用して、イベントをトリガーおよびアタッチします。イベントは、Symfony コードのあらゆる場所でトリガーされます。クラスをイベントに関連付けることができ、そのイベントがトリガーされたときにそれを変更できます。そうすれば、Responseオブジェクトを変更できます。

*Eventsコードでスローされるイベントは、そのコンポーネントのクラスで見つけることができます。この場合、REQUESTイベントが必要です。イベント ディスパッチャーとイベントのアタッチ方法について詳しくは、ドキュメントのイベント ディスパッチャー コンポーネントSymfony2 フレームワーク固有のドキュメントを参照してください。

Symfony2 はこれらのことに関して非常に厳格であることに気付きました

symfony はディレクトリ構造に関して厳密ではありません。推奨される構造のデフォルトの Standard Edition が提供されますが、変更して自分のものにすることができます。また、クラスが PSR-0 標準で書かれている場合、symfony は必要なすべてのクラスをロードします。

于 2012-12-15T22:18:50.727 に答える