2015-01-03 4 views
-2

я есть ипе запрос DQL в хранилище:Неопределенная переменная в контроллере

public function TabloBordCmdPeriod($dat1,$dat2) 
{$qb = $this->createQueryBuilder('a') 
    ->join('a.comElem','c') 
    ->select("sum(c.total) as total") 
    ->where("a.etat = 'Termine'") 
    ->andwhere('a.dateCreation between :dat1 AND :dat2') 
    ->setParameters(array('dat1'=>$dat1,'dat2'=>$dat2)); 
$query = $qb->getQuery(); 
$resultats = $query->getSingleScalarResult(); 
return $resultats;} 

запрос работает хорошо.

Я использую этот запрос в форме поиска (форма без класса), вот код формы:

class TBRechPeriodType extends AbstractType { 
public function buildForm(FormBuilder $builder, array $options){ 
$builder 
->add('du','date',array('required'=>false,'widget' => 'single_text', 'format' => 'dd-MM-yyyy', 'attr' => array('class' => 'date input-medium'))) 
->add('au','date',array('required'=>false,'widget' => 'single_text', 'format' => 'dd-MM-yyyy', 'attr' => array('class' => 'date input-medium'))) 
; 
} 
public function getName(){ 
return 'Recherche_Periodique';} 
} 

и в контроллере, код:

public function TBAction() 
{ 
    $formTBrech=$this->createForm(new TBRechPeriodType()); 
    $em = $this->getDoctrine()->getEntityManager(); 
    if($request->getMethod() == 'POST') 
    { 
     $formTBrech->bindRequest($request); 
     if($formTBrech->isValid()) 
     { $data = $formTBrech->getData(); 
      $period = $em->getRepository('ZXGescodBundle:Commande')->TabloBordCmdPeriod($data['du'],$data['au']); 
     } 
    }  
     $entities = $em->getRepository('ZXGescodBundle:Commande')->findall(); 
    return $this->render('ZXGescodBundle:Commande:TB.html.twig', array(
     'formTBrech' => $formTBrech->createView(), 
     'period'  => $period, 
     )); 
} 

, когда я загружаю шаблон, появляется сообщение об ошибке:

Notice: Undefined variable: period in C:\wamp\www\elitetest\src\ZX\GescodBundle\Controller\CommandeController.php line... 

как его решить? спасибо заранее

+3

'' period '=> isset ($ period)? $ period: null' – Federkun

ответ

-1

когда это не возвращает никаких результатов

$em->getRepository('ZXGescodBundle:Commande')->TabloBordCmdPeriod($data['du'],$data['au']); 

переменная $ период не присваивается значение. Итак, проверьте его перед назначением или сделайте так, как предложил Leggendario.

EDIT

Может быть, ваша форма не действует, поэтому он пропускает ту часть, где $ период присваивается значение.

if($formTBrech->isValid()) 
     { error_log("form is valid"); $data = $formTBrech->getData(); 
      $period = $em->getRepository('ZXGescodBundle:Commande')->TabloBordCmdPeriod($data['du'],$data['au']); 

     return $this->render('ZXGescodBundle:Commande:TB.html.twig', array(
      'formTBrech' => $formTBrech->createView(), 
      'period'  => $period, 
     )); 
    } else { error_log("form not valid"); ... } 
+0

Фактически, я выполняю поисковый запрос динамически через форму, есть два параметра date1 и date2, Я тестировал период переменной $, как указано leggendario, у меня все еще такая же ошибка. – Avi

Смежные вопросы