2015-12-22 37 views
0

我有miseAjour方法的錯誤,我不能找到解決錯誤的更新方法

這裏是錯誤: 控制器「團隊\ ManagerBundle \控制器\的PlayerController :: miseAjourAction()」要求您提供「$ id」參數的值(因爲沒有默認值或者因爲在此之後有非可選參數)。

這裏是miseAjourAction的代碼:

公共職能miseAjourAction($ ID){

$em = $this->container->get('doctrine')->getEntityManager(); 
$Player = $em->getRepository('TeamManagerBundle:Player')->find($id); 
$form = $this->createform(new PlayerForm(),$Player); 

$request = $this->getRequest(); 

if($request->getMethod() == 'POST'){ 
    $form->bind($request); 
    if($form->isValid()){ 

     $em = $this->container->get('Doctrine')->getEntityManager(); 
     $em->persist($Player); 
     $em->flush(); 


     return $this->render('TeamManagerBundle:Player:succes.html.twig',array('msg'=>'Mise à jour effectué avec succés')); 
    } 
} 
return $this->render('TeamManagerBundle:Player:miseajour.html.twig',array('Form'=>$form->createView())); 


    } 
+0

這是一個簡單的路由問題。可能只需要在您的控制器方法中添加$ id = null即可。或者在路線定義中設置一個默認值。 – Cerad

回答

0

問題可能與您的最後一個職位:這是更好地在你的倉庫使用findOneById()(如果你沒有結果就拋出異常)。嘗試使用這種代碼並告訴我們是否可以解決您的問題。

public function miseAjourAction($id) 
{ 
    $em = $this->getDoctrine()->getEntityManager(); 

    $player = $em->getRepository('TeamManagerBundle:Player')->findOneById($id); 

    if (!$player) { 
     throw $this->createNotFoundException('No player found for id '.$id); 
    } 

    $form = $this->createform(new PlayerForm(), $player); 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     $em->persist($player); 
     $em->flush(); 

     return $this->render('TeamManagerBundle:Player:succes.html.twig',array('msg'=>'Mise à jour effectué avec succés')); 
    } 

    return $this->render('TeamManagerBundle:Player:miseajour.html.twig',array('Form'=>$form->createView())); 
} 
+0

爲什麼不斷推薦findOneById查找?雖然findOneById有點慢,並且要求您的主鍵實際上被命名爲'id',但它們的功能相當。 – Cerad

+0

我發現它是從所述路由 問題是 team_manager_MAJ_player: 路徑:/ miseAjour/ 默認:{_controller:TeamManagerBundle:球員:miseAjour} 我改變的路徑:路徑:/ miseAjour/{ID } –