1

別のアクションにリダイレクトして、新しいアクションでフォーム フィールドに入力するにはどうすればよいですか?

アクションがあり、redirect() を次のように呼び出したいとします。

$this->redirect('foo/search?Search[last_name]='.$this->form->getValue('last_name'));

私の検索アクションにリダイレクトする必要があり、そのアクションのフォームに入力された last_name パラメータを取得する必要があります。そのアクションには次のようなコードがあります。

public function executeSearch(sfWebRequest $request)
{
   $this->form = new SearchForm();
   $submission = $request->getParameter($this->form->getName());
   ...do stuff with $submission...

SearchForm の名前形式は 'Search[%s]' です。

redirect() のパラメーターで試したことはありません。Search[] パラメータは常に何らかの形で混乱し、フォームに入力されません。

4

2 に答える 2

2

ルートとパラメーターに基づいて、Symfony に URL を生成させようとします。

@search = a route for your search action in your routing.yml

$parameters = array of the parameters you want to pass

$url = $this->generateUrl('search', $parameters);
$this->redirect($url);

パラメータの配列は次の形式を取る必要があります...

'Search[something1]' => 'value1'
'Search[something2]' => 'value2'

...したがって、URLは次のようになります。

?Search[something1]=value1&Search[something2]=value2

その後、使用できるはずです...

$this->form->bind($request->getParameter('Search'));
(for binding)

...そしておそらく...

$this->form->setDefaults($request->getParameter('Search'));
(for populating for a template)

それが役立つか、少なくともいくつかのアイデアを提供してくれることを願っています。

于 2011-04-29T22:14:59.410 に答える
0

このソリューションを試してください。

もう1つの方法は、送信データをユーザーセッションに保存することです。

于 2011-04-29T03:48:26.143 に答える