[英]Symfony2 set value for formfield in controller
當我嘗試添加任務並將當前用戶自動添加到任務的手風琴字段時,出現以下異常:
可捕獲的致命錯誤:傳遞給Seotool \\ MainBundle \\ Entity \\ Task :: setUser()的參數1必須是Seotool \\ MainBundle \\ Entity \\ User的實例,給定字符串,在/ Applications / MAMP / htdocs / Seotool / vendor / symfony中調用/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php在第438行並在/Applications/MAMP/htdocs/Seotool/src/Seotool/MainBundle/Entity/Task.php第174行中定義
我的控制器如下所示:
/**
@Route(
* path = "/taskmanager/user/{user_id}",
* name = "taskmanager"
* )
* @Template()
*/
public function taskManagerAction($user_id, Request $request)
{
/* #### NEW TASK FORM #### */
$task = new Task();
$addTaskForm = $this->createForm(new TaskType(), $task);
$addTaskForm->handleRequest($request);
if($addTaskForm->isValid()):
$task->setDone(FALSE);
$task->setUser($user_id);
$task->setDateCreated(new \DateTime());
$task->setDateDone(NULL);
$em = $this->getDoctrine()->getManager();
$em->persist($task);
$em->flush();
return $this->redirect($this->generateUrl('taskmanager', array('user_id' => $user_id)));
endif;
Entity / Task.php中的第174行:
/**
* Set User
*
* @param \Seotool\MainBundle\Entity\User $user
* @return Task
*/
public function setUser(\Seotool\MainBundle\Entity\User $user = null)
{
$this->User = $user;
return $this;
}
有人知道如何使用$ user_id值設置隱藏的“用戶”表單字段的值嗎?
提前致謝
你做不到
$task->setUser($user_id);
因為$user_id
是一個字符串,並且您的方法簽名期望使用Seotool\\MainBundle\\Entity\\User
類型的對象。
您可以根據自己的需要以兩種方式進行操作(但我想只有第二種選擇才適合您):
1)如果您不需要任務對象中的引用(面向ORM)或用戶對象,請修改setUser()
函數
public function setUser($user = null)
{
$this->User = $user;
return $this;
}
2)檢索當前用戶並進行設置
public function taskManagerAction($user_id, Request $request)
{
[...]
if($addTaskForm->isValid()):
$user = $this->get('security.context')->getToken()->getUser();
$task->setUser($user);
[...]
endif;
$this->get('security.context')->getToken()->getUser();
給您當前的登錄用戶,但也許您還需要更改簽名(可能是繼承問題?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.