我在symfony和控制器中创建一个表单我得到了post值,但是当我得到值时,如果变量不存在则显示未定义的变量,这是我的控制器:
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没有发布时它获得值然后它不存储项目中的值,我的itemscounter值为6。
答案 0 :(得分: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();
}