2013-03-29 95 views
0

我堅持用下面的代碼:傳遞某種形式的數據到PHP控制器(Opencart的)

 <?php if ($orders) { ?> 
     <?php foreach ($orders as $order) { ?> 
     <tr> 
      <td style="text-align: center;"><?php if ($order['selected']) { ?> 
      <input type="checkbox" name="selected[]" value="<?php echo $order['order_id']; ?>" checked="checked" class="trigger"/> 
      <?php } else { ?> 
      <input type="checkbox" name="selected[]" value="<?php echo $order['order_id']; ?>" class="trigger" /> 
      <?php } ?></td> 
      <td class="right"><?php echo $order['order_id']; ?></td> 
      <td class="left"><?php echo $order['customer']; ?></td> 
      <td class="left"><?php echo $order['status']; ?></td> 
      <td class="right"><?php echo $order['total']; ?></td> 
      <td class="left"><?php echo $order['date_added']; ?></td> 
      <td class="left"><?php echo $order['date_modified']; ?></td> 
      <td class="right"><?php foreach ($order['action'] as $action) { ?> 
      [ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ] 
      <?php } ?></td> 
     </tr> 

     <tr class="eph-row" style="" > 
      <td colspan="8" style="background-color: #EBF6FF; height: 50px;"> 
      <div style=""> 
       <label for="eph-dobierka" style="display: table-row;">Dobierka</label> 
       <input type="text" name="eph-dobierka" id="eph-dobierka" value="" size="7" placeholder="Dobierka"/> 
      </div> 
      </td> 
     </tr> 

     <?php } ?> 
     <?php } else { ?> 

order_info

這裏是控制器的代碼:

public function eph() { 
     $this->load->model('sale/order'); 

     $this->data['orders'] = array(); 

     $orders = array(); 

     if (isset($this->request->post['selected'])) { 
      $orders = $this->request->post['selected']; 
     } elseif (isset($this->request->get['order_id'])) { 
      $orders[] = $this->request->get['order_id']; 
     } 

$xml = "<?xml version='1.0'?>"; 
    $xml .= "<EPH>\n"; 
     $xml .= "<Zasielky>\n"; 

       foreach ($orders as $order_id) { 
       $order_info = $this->model_sale_order->getOrder($order_id); 
       $xml .= "<Zasielka>\n"; 
        $xml .= "<Adresat>\n"; 
         $xml .= "<Meno>".$order_info['shipping_firstname']." ".$order_info['shipping_lastname']."</Meno>\n"; 
         $xml .= "<Organizacia>".$order_info['shipping_company']."</Organizacia>\n"; 
         $xml .= "<Ulica>".$order_info['shipping_address_1']."</Ulica>\n"; 
         $xml .= "<Mesto>".$order_info['shipping_city']."</Mesto>\n"; 
         $xml .= "<PSC>".$order_info['shipping_postcode']."</PSC>\n"; 
         $xml .= "<Telefon>".$order_info['telephone']."</Telefon>\n"; 
         $xml .= "<Email>".$order_info['email']."</Email>\n"; 
         $xml .= "<sum>".$this->request->post['eph-dobierka']."</sum>\n"; 
        $xml .= "</Adresat>\n"; 
       $xml .= "</Zasielka>\n"; 
       } 

     $xml .= "</Zasielky>\n";    
    $xml .= "</EPH>\n"; 

     libxml_use_internal_errors(true); 
     $xmls = simplexml_load_string($xml); 

     if ($xmls === false) { 
      echo "Failed loading XML\n"; 
      foreach(libxml_get_errors() as $error) { 
       echo "\t", $error->message; 
      } 
     } 

     Header('Content-type: text/xml'); 
     //Header('Content-disposition: attachment; filename="eph.xml"'); 
     print($xmls->asXML()); 




    } 

正如你可以根據選定的[]值查看從數據庫中查詢的選定行。

I加入所述<tr class="eph-row">...</tr>部分的原代碼,我要一些值傳遞給所述控制器,基於此行被選擇=>的:$xml .= "<sum>".$this->request->post['eph-dobierka']."</sum>\n";在控制器中的「順序的foreach」(這不是工作)。

回答

1

此代碼似乎爲每個訂單創建一個輸入元素name="eph-dobierka"。這不是你想要的,因爲$_POST是一個數組(內部),並且只能有一個具有特定名稱的索引。 我想你想的標記放的

<label for="eph-dobierka<?php echo $order['order_id']; ?>" style="display: table-row;">Dobierka</label> 
<input type="text" name="eph-dobierka[<?php echo $order['order_id']; ?>]" id="eph-dobierka<?php echo $order['order_id']; ?>" value="" size="7" placeholder="Dobierka" /> 

代替

<label for="eph-dobierka" style="display: table-row;">Dobierka</label> 
<input type="text" name="eph-dobierka" id="eph-dobierka" value="" size="7" placeholder="Dobierka"/> 

$xml .= "<sum>" . $this->request->post['eph-dobierka'][$order_id] . "</sum>\n"; 

代替

$xml .= "<sum>" . $this->request->post['eph-dobierka'] . "</sum>\n"; 
在控制器

這假定您要在每個訂單的用戶界面中手動輸入「Dobierka」的值。

+0

正是我想要的,社區的力量!非常感謝你。 – Adrian

相關問題