-1

私はsymfonyでフォームを作成し、コントローラーで投稿値を取得しますが、変数が存在しない場合に値を取得すると、未定義の変数が表示されます。これが私のコントローラーです:

 for($i=1; $i<=$itemscounter; $i++){

                    if($i==1){
                        $items = $_POST['items'];
                        $description=$_POST['description'];
                        $unitprice=$_POST['unitprice'];
                        $quantity=$_POST['quantity'];
                        $linetotal=$_POST['linetotal']; 


                    }else {
                        $items = $_POST['items'.$i];
                        $description=$_POST['description'.$i];
                        $unitprice=$_POST['unitprice'.$i];
                        $quantity=$_POST['quantity'.$i];
                        $linetotal=$_POST['linetotal'.$i];                      
                    }

                    $entity->setInvoiceid($invoiceid);
                    $entity->setInvoiceitemsid($items);
                    $entity->setDescription($description);
                    $entity->setUnitPrice($unitprice);
                    $entity->setQuantity($quantity);
                    $entity->setlinetotal($linetotal);
                    $em->persist($entity);                        
                    $em->flush();
                    $em->clear();

                }
            }else{

                    $items = $_POST['items'];
                    $description=$_POST['description'];
                    $unitprice=$_POST['unitprice'];
                    $quantity=$_POST['quantity'];
                    $linetotal=$_POST['linetotal']; 
                    $entity->setInvoiceid($invoiceid);
                    $entity->setInvoiceitemsid($items);
                    $entity->setDescription($description);
                    $entity->setUnitPrice($unitprice);
                    $entity->setQuantity($quantity);
                    $entity->setlinetotal($linetotal);
                    $em->persist($entity);                        
                    $em->flush();
                    $em->clear();
                } 

しかし、コントローラーが値items2、description2、unitprice2、quantity2、linetotal2を取得する場合、このエラーを削除する方法はありますか?items2が投稿されていない場合に値を取得すると、itemsに値が保存されず、itemscounter値は6です。

4

1 に答える 1

2

issetのような基本的なphpを使用する必要があります。しかし、それはあなたのコードのロジックの問題だと思います。項目1 [説明] のような html 名を使用する必要があります。非常に使いやすいです。

私はあなたのコードを少しきれいにしました。コピーパスタを使うべきではない

for($i=1; $i<=$itemscounter; $i++){

    if($i==1){
        $suffix= '';
    }else{
        $suffix = $i;
    }

    if( isset($_POST['items'.$suffix])
        && isset($_POST['description'.$suffix]) 
        ......) {

        $items = $_POST['items'.$suffix];
        $description=$_POST['description'.$suffix];
        $unitprice=$_POST['unitprice'.$suffix];
        $quantity=$_POST['quantity'.$suffix];
        $linetotal=$_POST['linetotal'.$suffix];                      


        $entity->setInvoiceid($invoiceid);
        $entity->setInvoiceitemsid($items);
        $entity->setDescription($description);
        $entity->setUnitPrice($unitprice);
        $entity->setQuantity($quantity);
        $entity->setlinetotal($linetotal);
        $em->persist($entity);                        
        $em->flush();
        $em->clear();

} 
于 2013-10-11T07:05:39.347 に答える