これは私の単純なコードredirectToRouteを使ってオブジェクトを正しく渡すには?
class LuckyController extends Controller { public function taskFormAction(Request $request) { $task = new Task(); //$task->setTask('Test task'); //$task->setDueDate(new \DateTime('tomorrow noon')); $form = $this->createFormBuilder($task) ->add('task', TextType::class) ->add('dueDate', DateType::class) ->add('save', SubmitType::class, array('label' => 'Save')) ->getForm(); $form->handleRequest($request); if($form->isSubmitted() && $form->isValid()) { $task = $form->getData(); return $this->redirectToRoute('task_ok', array('task' => '123')); } return $this->render('pre.html.twig', array('pre' => print_r($task, true), 'form' => $form->createView())); } public function taskOKAction(Task $task) { return $this->render('ok.html.twig', array('msg' => 'ok', 'task' => print_r($task, true))); } }
と
return $this->redirectToRoute('task_ok', array('task' => '123'));
がtaskOKActionへのリダイレクトを行い、このラインであるが、それは私がちょうどURLでパラメータを送信することができます(?タスク= 123)。
私はオブジェクト$ formをtaskOKActionに送信して、ユーザーがフォームに入力したものを画面に表示する必要があります。
どうすればいいですか?私はすでにstackoverflowで赤色になっています。フォームのデータをデータベースやファイルなどに格納し、URLのパラメータをオブジェクトのIDに渡すだけでよいということを尋ねる前に、私はそれはかなり良い解決だと思うが、それは私が他のオブジェクトを表示するためにURLでIDを変更していないかどうかをチェックする責任を私に追加します。
これを行うにはどうすればよいですか?あなたが実際に302リダイレクトせずにそれを行うことができ、フォームアクションから
敬具、 L.
私はrouting.ymlを使用します。私が書いたように、私はあなたのソリューションを実行しようとしました: 'パス:/タスク/ OK/{タスクは}'次 をルーティングするには、私は にコードを変更し 'ます$ this-> redirectToRoute( 'task_ok'、配列( 'タスク' を返します=> $タスク)); ' オブジェクトを送信すると、私は '警告ました:するpreg_match()は、パラメータ2は、文字列、オブジェクトgiven' :( ことを期待し、私は '@ParamConverter( "タスク"、クラス= も追加"AppBundle:Entity:Task") ' の前にtaskOKアクション。 – Lukaszy
はオブジェクトを渡さず、IDだけを渡します –