簡體   English   中英

控制器中Formfield的Symfony2設置值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM