У меня есть контроллер с двумя ...Action()
-методами. Когда я вызываю маршрут /newTask
с именем маршрута newTask
внутри браузера У меня есть форму, чтобы установить Task
-объект. После подачи с помощью Submit
-Кнопки Я хочу, чтобы перенаправить на маршрут /success
с названием маршрута task_success
:Как redirectToRoute() с аргументами, которые не являются частью маршрута?
class FormController extends Controller {
/**
* @Route("/newTask", name="newTask")
*/
public function newAction(Request $request)
{
// create a task and give it some dummy data for this example
$task = new Task();
$task->setTask('Write a blog post');
$task->setDueDate(new \DateTime('tomorrow'));
$form = $this->createFormBuilder($task)
->add('task', TextType::class)
->add('dueDate', DateType::class)
->add('save', SubmitType::class, array('label' => 'Create Task'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//Here I want to redirect...
return $this->redirectToRoute('task_success', array('task' => $task));
}
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
}
/**
* @Route("/success", name="task_success")
*/
public function successAction($task){
return $this->render('default/success.html.twig',array('task' => $task));
}
}
Как вы можете видеть, метод successAction
имеет параметр $task
, который мне нужно показать значения с success.html.twig
, но мне не нужно task
в качестве части маршрута (например, \success\{task}
).
Так как я могу перенаправить с аргументом $task
, не используя его внутри маршрута?
'return $ this-> redirect ($ this-> generateUrl ('task_success', array ( 'task' => $ task, ) ));'? – DOZ
Не работает, потому что «Контроллер» AppBundle \ Controller \ FormController :: successAction() требует, чтобы вы предоставили значение для аргумента «$ task» (поскольку значение по умолчанию отсутствует или потому что после него есть необязательный аргумент один). ' – goulashsoup