2017-07-25 13 views
0

でから別のテーブルを更新する方法:更新が適切に行われている場合、私はよく分からないが、基本的に私は給与計算期間と給与の週更新したいエラーの取得symfonyの

Variable "form" does not exist in comtwclagripayrollBundle:Payrollperiod:new.html.twig at line 9

を一度試合があります。リポジトリはそれをチェックします。

リポジトリ:

public function findByPayrollPeriod($startDate, $endDate) 
    { 
    return $this->getEntityManager() 
    ->createQuery(
     'SELECT p FROM comtwclagripayrollBundle:PayrollWeek 
      WHERE startDate = :startDate or endDate = :endDate' 
    ) 
    ->setParameter('startDate', $startDate) 
    ->setParameter('endDate', $endDate) 
    ->getResult(); 
    } 

コントローラー:

public function createAction(Request $request) 
    { 
     $em = $this->getDoctrine()->getManager(); 

    $entity = new Payrollperiod(); 

    $form = $this->createCreateForm($entity); 

    $form->handleRequest($request); 

    $payrollperiod = $em->getRepository('comtwclagripayrollBundle:Payrollperiod')->findOneBy(['startdate'=>$form->get('startDate')->getData(), 'enddate'=>$form->get('endDate')->getData()]); 

    //If entity exists 
     if ($payrollperiod){ 

       $this->addFlash('error', 'Payroll Period exist.'); 
       return $this->redirect($this->generateUrl('payrollperiod')); 
      } 

     if ($form->isSubmitted() && $form->isValid()) { 
      $payrollweek = $em->getRepository('comtwclagripayrollBundle:Payrollperiod')->findByPayrollPeriod(['startdate'=>$form->get('startDate')->getData(), 'enddate'=>$form->get('endDate')->getData()]); 
      if ($payrollweek){ 
      $entity->setPayrollweek($payrollweek); 

      $em->persist($entity); 
      // $em->persist($payrollweek); 

      $em->flush(); 
      $this->addFlash('error', 'Payroll Period was added.'); 
      return $this->redirect($this->generateUrl('payrollperiod')); 
      //return $this->redirect($this->generateUrl('payrollperiod_show', array('payrollperiodid' => $entity->getpayrollperiodid()))); 
     } 


    return $this->render('comtwclagripayrollBundle::new.html.twig',array('form' => $form->createView())); 


    } 
} 
private function createCreateForm(Payrollperiod $entity) 
{ 
    $form = $this->createForm(new PayrollperiodType(), $entity, array(
     'action' => $this->generateUrl('payrollperiod_create'), 
     'method' => 'POST', 
    )); 

    $form->add('submit', 'submit', array('label' => 'Create')); 

    return $form; 
} 

小枝:

{% extends '::base.html.twig' %} 


{% block body -%} 
    <div id="pg_section_sml_card"> 
     <h1 class="pg_card_hdr">Payroll Period</h1> 
    <div class="pg_card_text"> 

      {{ form_start(form) }} 
      {{ form_errors(form) }} 
      {{ form_end(form) }} 

     <ul class="record_actions"> 
    <li> 
     <a href="{{ path('payrollperiod') }}"> 
      Back to the list 
     </a> 
    </li> 
</ul> 
&nbsp; 
</div> 
    </div>  
    {% endblock %} 
+0

あなたがpayrollweekの場合は、私は閉じていることを忘れた –

+0

おかげで、私はそれでも同じエラーが表示されます。 – Sue

答えて

0

これは私が結果を達成するために行ったことでした。

public function createAction(Request $request) 
    { 


    $entity = new Payrollperiod(); 

    $form = $this->createCreateForm($entity); 

    $form->handleRequest($request); 


     if ($form->isSubmitted() && $form->isValid()) { 

     $em = $this->getDoctrine()->getManager(); 

     $payrollperiod = $em->getRepository('comtwclagripayrollBundle:Payrollperiod')->findOneBy(['startdate'=>$form->get('startDate')->getData(), 'enddate'=>$form->get('endDate')->getData()]); 

     $payrollweek = $em->getRepository('comtwclagripayrollBundle:Payrollweek')->findBystartdateAndenddate($form->get('startDate')->getData(), $form->get('endDate')->getData()); 

     //If entity exists 
     if ($payrollperiod){ 
       $this->addFlash('error', 'Payroll Period exist.'); 
       return $this->redirect($this->generateUrl('payrollperiod')); 
      } 
      //If PayrollWeek matches the Payrollperiod entered 
      elseif ($payrollweek){ 
      //This adds the payroll period id to the payroll week table 
      foreach($payrollweek as $pWeek) { 
      $pWeek->setPayrollperiodid($entity); 
      //$em->persist($pWeek); 
      } 

      $em->persist($entity); 
      $em->flush(); 

      $this->addFlash('error', 'Payroll Period was added.'); 
      $this->addFlash('error', 'Payroll week was updated.'); 
      return $this->redirect($this->generateUrl('payrollperiod')); 
      //return $this->redirect($this->generateUrl('payrollperiod_show', array('payrollperiodid' => $entity->getpayrollperiodid()))); 
      } 
      else{ 
       $this->addFlash('error', 'Payroll Period does not match a payroll week.'); 
      return $this->redirect($this->generateUrl('payrollperiod')); 
      } 
     } 

     //return $this->render('comtwclagripayrollBundle::new.html.twig',array('form' => $form->createView())); 
     return array(
      'entity' => $entity, 
      'form' => $form->createView(), 
     ); 

     } 
0

有効なを持っていない限り、この方法は、あなたが$formに有効なsymfonyのフォームコンポーネントを返却していない、 createCreateForm()と呼ばれる、あなたはのようにフォームタイプとエンティティタイプに渡す必要がありフォームタイプは、作成しようとしているフォームがある $form = $this-createForm(FormType::class, $entity); 、することができますあなたはそれが問題だと確認していますか?何かをレンダリングすることはありませんcreateAction()

+0

createCreateForm()で質問を更新しました – Sue

+0

私が間違っていない限りレンダリングしてもまだ動作しません。 – Sue

関連する問題