2016-11-12 20 views
0

我是symfony編程的初學者,我很好奇我怎樣才能比較控制器中的兩個對象。 這是我的頁面的樣子:https://gyazo.com/bab9d948bdb7a2ae3375feb553ce07b2如何比較使用IF symfony2的控制器中的對象PHP

在左上角有我的金額,我想買一輛有自己價格的車。金額在數據庫中有自己的位置,汽車有獨立的位置。按購買汽車它會打開一個表格,如下所示:https://gyazo.com/58582c628d8507e6b3eac48a7645f2a1

有兩種選擇:返回重定向到首頁和刪除(購買),從數據庫中刪除汽車。 這是控制器功能的樣子:

public function deleteAction(Request $request, Car $car){ 
$form = $this -> createFormBuilder($car) 
     ->add('save',SubmitType::class,['label' => 'DELETE']) 
     ->getForm(); 

    $form2 = $this -> createFormBuilder($car) 
     ->add('save2',SubmitType::class,['label' => 'BACK']) 
     ->getForm(); 


    $form->handleRequest($request); 
    $form2->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()) { 


     $em = $this ->getDoctrine()->getManager(); 
     $baze = $em->getRepository('AppBundle:Produktas')->find(1); 
     $price =$car->getPrice(); 



     if($price < $baze) { 
     $baze->setKaina($baze->getKaina() - $price); 
      $em->remove($car); 
    } 

     $em->flush(); 
     return $this->redirectToRoute('car_index'); 
    } 

的問題是:如何能在我如果在一個適當的方式比較兩個對象?我想使如果(我的錢>汽車價格){我可以買它}

回答

0

起初,我會改變你的後退鏈接,通常是鏈接,而不是形式。

您的錯誤是檢查價格和Produktas是否相等。我想你在這裏忘了getPrice方法。

但我會這樣做一個不可變的對象。創建一個新的貨幣對象,請查看:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/embeddables.html

我會建議創建一個Pocket實體並在其中使用money實體。

現在您可以使用同一貨幣實體定義車輛實體中的價格。

在你的汽車實體中,你應該定義一個叫做: isBuyable(Pocket $pocket)的方法。在這裏,您應該檢查貨幣值是否大於或等於車內實體的貨幣對象,並在條件匹配時返回true。

在你的控制器中,你現在使用isBuyable方法。

此外,您可以在您的汽車存儲庫中創建一個新的方法和取只可買的車,看看http://symfony.com/doc/current/doctrine/repository.html

希望它能幫助, 乾杯, 羅賓