为什么我得到了未定义的变量,即使它在我的代码中有明确的定义?

时间:2015-07-30 02:37:25

标签: php symfony

我正在使用symfony实现一个项目。我有一个可以找到缺失数据的函数,分页和搜索一样。我现在的问题是我收到错误声明:

  

注意:未定义的变量:数据输入   C:\ XAMPP \ htdocs中\供应商的\ src \供应商\ SupplierBundle \控制器\ SupplierController.php   第375行

这是我的控制器代码:

public function missingDataAction(Request $request,$page){
        $request = $this->getRequest();
        $refNumber = $request->query->get('poNumber');
        $invNumber = $request->query->get('invNumber');

        $max_records = 15 ;
        $em = $this->getDoctrine()->getManager();
        $asns =  $em->getRepository('SupplierBundle:SupplierTransactionDetail')->findDocs($invNumber,$refNumber,'856');

        foreach ($asns as $asn){
            $ref_number [] = $asn->getRefNumber(); 
            $data = $em->getRepository('SupplierBundle:SupplierTransaction')->findMissingData($refNumber, $page, 15);

            $count = $data->count();
            $pagination = array(
                'page' => $page,
                'route' => 'supplier_missingData',
                'route_params' => array()
            );

            if ($max_records > 0 ) {
                $pagination['pages_count'] = max(ceil($count / $max_records), 1 );
            }
        }
        return $this->render('SupplierBundle:Supplier:missingData.html.twig', array('result' => $data, 'pagination' => $pagination ));

    }

我不知道出了什么问题。它清楚地定义了数据,但它仍然给我一个错误。我不知道该怎么做。希望有人能看到我能看到的东西。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

您从未进入循环的场景,您使用数据变量返回,但尚未定义

只需将数据变量定义(下面一行)移动到for循环上方

$data = $em->getRepository('SupplierBundle:SupplierTransaction')->findMissingData($refNumber, $page, 15);

$pagination = array(
            'page' => $page,
            'route' => 'supplier_missingData',
            'route_params' => array()
        );

foreach ($asns as $asn){
    $ref_number [] = $asn->getRefNumber();
    ...     

答案 1 :(得分:0)

我能想到两件事。

一,函数$em->getRepository('SupplierBundle:SupplierTransaction')->findMissingData($refNumber, $page, 15)没有返回值,因此未定义$ data。

我能想到的另一件事是$ asns是一个空数组,因此foreach循环永远不会运行。因此,当您在return语句中使用$ data时,尚未定义它,因为foreach循环中定义它的代码从未运行过。

答案 2 :(得分:0)

您好回答评论to put a no result message中的问题我会给您简短的答案,如果您需要更深入的答案,最好将其作为单独的问题发布

 if( count( $asns ) ){
   foreach( $asns as   $asn ){
 .....
     }
}else{ 
     //add no search message to result array here
 }