2017-07-10 5 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参照)でこれを処理するのが最善ですが、ユーザーは特定の状態を持っています。これはおそらくセキュリティレイヤーによって最もよく処理されます。最後に、カスタムの「フラッシュメッセージ」をエラーとして作成し、場合によってはフォームの使用を許可しないことができます。詳細を達成したいものをさらに記述してください。 –

+0

ユーザーが編集するために非アクティブ状態を選択すると、この状態を編集できないというエラーメッセージが表示されます。私はこのようなものを追加しました。 – Sue

+0

あなたが持っているようなフラッシュはOK解決策ですよね?何がもっと必要ですか? –

答えて

1

たぶん(のみ小枝テンプレートの)このような何かを見るために追加します。

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

私は右bechind <body>タグをお奨めします。

+0

おかげでこれは助けられました – Sue

+0

問題はありませんので、 – mcek

関連する問題