2017-07-10 59 views
1

我已經使用CRUD爲實體生成動作。但是,我想修改編輯操作;例如,用戶選擇'非活動'由1代表狀態,那麼他們將顯示錯誤消息,否則他們可以繼續更新該行。在實體內,這些是變量state,paypid,startDate,endDate如何在symfony中執行錯誤消息

這是編輯操作當前的樣子。

public function editAction($Paypid) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $entity = $em->getRepository('comtwclagripayrollBundle:Payrollperiod') 
     ->findBy(['paypid' => $Paypid, 'state' => 0]); 

    if (!$entity) { 
     $this->addFlash(
     'notice', 
     'You cannot edit an inactive Payroll Period' 
     ); 

     return $this->redirectToRoute('/payrollperiod'); 
    } 

    $editForm = $this->createEditForm($entity); 
    $deleteForm = $this->createDeleteForm($Paypid); 

    return array(
     'entity'  => $entity, 
     'edit_form' => $editForm->createView(), 
     'delete_form' => $deleteForm->createView(), 
    );   
} 

And this method in the repository entity. 

public function findByPaypidAndActiveState($Paypid) 
{ 
    return $this->getEntityManager() 
     ->createQuery(
      'SELECT p FROM comtwclagripayrollBundle:Payrollperiod 
       WHERE paypid = :paypid AND state = :state' 
     ) 
     ->setParameter('paypid', $Paypid) 
     ->setParameter('state', 0) 
     ->getResult(); 
} 
+0

你能澄清究竟是什麼觸發了錯誤?如果在表單中選擇特定值,最好使用自定義驗證來處理此問題(請參閱http://symfony.com/doc/current/validation/custom_constraint.html),但如果您希望整個操作在用戶有一個特定的狀態,這可能是最好的安全層處理。最後,您總是可以創建自定義的「Flash消息」作爲錯誤,並且在某些情況下不允許使用該表單。請詳細描述您想要實現的內容。 –

+0

當用戶選擇一個非活動狀態進行編輯時,應該給他們一個錯誤信息,表明這個狀態不能被編輯。我已經添加了這樣的東西。 – Sue

+0

像你這樣的閃光燈是一個很好的解決方案,對吧?你還需要什麼? –

回答

1

也許添加到瀏覽這樣的事情(僅適用於枝模板):

{% for type, flash_messages in app.session.flashBag.all %}      
     {% for flash_message in flash_messages %} 
       {{ flash_message }} 
     {% endfor %} 
{% endfor %} 

我recomended權bechind <body>標籤。

+0

好的,謝謝這有助於 – Sue

+0

沒問題,所以把我的answear標記爲對其他人有用 – mcek

相關問題