我有一個控制器有兩個...Action()
-方法。當我在路由器名稱newTask
內呼叫路由/newTask
時,我有一個表單來設置Task
-object。通過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
不起作用,因爲Controller「AppBundle \ Controller \ FormController :: successAction()」要求您爲「$ task」參數提供一個值(因爲沒有默認值或者因爲在此之後有非可選參數一)。 ' – goulashsoup