2012-10-17 27 views
4

我有上诉实体; SiteTariff,用户实体;关税,现场实体 如何将验证移动到实体。验证复杂:包含相关实体。我试图写一个回调(在实体)=>没有结果。Symfony 2将验证移至实体,与相关实体验证

$appeal = new Appeal(); 
    $form = $this->createFormBuilder($appeal); 

    if ($request->isMethod('POST')) 
    { 
     $form->bind($request); 

     $appeal->setUser($user); //addRelation 

     $appeal->appeals_count = $value; //set value to public field 

     if ($site_tariff_id = $form->getData()->site_tariff_id) 
     { 
      $siteTariff = $em->find('', $site_tariff_id); 
      $appeal->setSiteTariff($siteTariff); //addRelation 
     } 
     else 
     { 
      //addError, break 
     }      


     if ($appeal->getSiteTariff()->getSite()->getUser()->getId() != $user->getId()) 
     { 
      //addError 
     } 

     if ($appeal->getSiteTariff()->getTariff()->getAppealsNumber() <= $appeal->appeals_count) 
     { 
      //addError 
     } 

     if ($form->isValid()) 
     { 
      $em->persist($appeal); 
     } 
    } 

在回调,我没有得到$ siteTariff对象调用$this->getSiteTariff()后,symfony中写道:“非对象

public function isSiteTariffValid(ExecutionContext $context) 
    { 
     var_dump($this->getSiteTariff()->getId());  
    } 
+0

我不是symfony专家,但行是“$ siteTariff = $ em-> find('',$ site_tariff_id);”正确吗? $ em是指您的实体经理或您的存储库? ($ em-> getRepository(entity) - > find($ id)) – SmasherHell

+0

什么是当前类,它是父类?因为我认为'getSiteTariff()'是一个实体的方法,而不是验证类。 – martinqt

回答