0

同じモジュールでアクションからaアクションにリダイレクトしたい。bアクションbを実行するにはcsrfトークンが必要であり、いくつかのパラメーターも渡す必要があります。

アクションa:

public function executeA(sfWebRequest $request){

   //... do stuff

   $this->redirect('module/b?id='.$something->getId());

}

アクションb:

public function executeB(sfWebRequest $request){

   $request->checkCSRFProtection(); //morte

   $something_id = $request->getParameter('id');
   //... do stuff

}

アクションは、リクエストとともにcsrfトークンを送信するため、または他のメソッドbによって作成されたアンカーをクリックした場合にのみ実行されます。link_to('module/b?id='.$something.getId() , array('method' => 'post'))

私はメソッドを試し$this->forward()、のようにパラメータをリダイレクト$this->redirect()するために追加しようとしましたが、何も機能せず、Web上でも何も見つかりません。APIドキュメントには、それについての注意が記載されています。私が得るのは'method' => 'post'link_to()

 500 | Internal Server Error | sfValidatorErrorSchema
_csrf_token [Required.]

エラー。とマークされた行で失敗します//morte。誰かがこれを正しく行う方法を知っていますか、また他のモジュールにリダイレクトしたい場合もありますか?

4

1 に答える 1

2

これでより明確になりました。

事実は_csrf_token、他のアクションにリダイレクトされていないということです。つまり、クエリに再度追加していません。

試す:

public function executeA(sfWebRequest $request){

   //... do stuff

   $this->redirect('module/b?id='.$something->getId().'?_csrf_token='.$request->getParameter('_csrf_token'));

}
于 2012-09-12T12:09:04.770 に答える