2011-07-13 10 views
0

I現在ユーザーのIPアドレスを必要とする新しいレコードを作成するためのフォームを作成しています。SymfonyフォームクラスのsfWebRequestへのアクセス?

私はこれを準備して:$this->getObject()->setIp(ip2long($sf_request->getRequest()->getHttpHeader ('addr','remote')));

しかし、私が私のフォームモデルで$ sf_requestオブジェクトを持っていないことは明らかです。これにアクセスしてユーザーのIPアドレスを取得するにはどうすればよいですか?アクションメソッドの$リクエストパラメータに

アクセスとHTTPヘッダからIPアドレスを抽出します。

+0

可能な複製:http://stackoverflow.com/questions/6345437/best-way-to-get-request-object-from-within-symfony-forms – madflow

+0

dupplicateではありません。私は解決策を見つけ、答えを掲示した。 :) – DucDigital

答えて

0

はこれを試してみてください、ありがとうございました。次に、ビューファイルで、変数をパラメータとしてフォームファイルに送信します。私は正確にどのように知りませんが、私は、たとえば、あなたがこのことについて考えるしばらく

幸運

0

それを埋めるために、フォームにパラメータとしてオブジェクトを渡すことができます知っています。 setIPメソッドを自分のアクションに移動し、デフォルトのprocessFormメソッドを次のようにオーバーライドします。

public function processForm(sfWebRequest $request, sfForm $form){ 
    $form->getObject()->setIp(ip2long($request->getHttpHeader ('addr','remote'))); 
    return parent::processForm($request, $form); 
    } 

これは問題なく動作します。

+1

あなたのフォームに「リクエスト」オプションを追加する方法があります。 symfony Admin Generatorを使用していることを理解しています。したがって、moduleGeneratorConfiguration-> getFormOptions()メソッドを使用することができます。 このようにすると、フォームに依存関係を注入できます。 – Damien

関連する問題