2012-04-11 48 views
0

我想編碼的東西,我認爲會相當直接:接受用戶輸入的字段,然後用該值更新記錄數組。由於我對Request對象的最小理解,我認爲我很磕磕絆絆。我在索引視圖中有一個表格CakePHP不理解請求對象

<div class="<?php echo $this->request->params['action']; ?>"> 

<?php 
echo $this->Form->create('Invoice', array('action' => 'edit')); 
echo $this->Form->input('id', array('type' => 'hidden')); 
echo $this->Form->input('purchaseOrderNumber'); 
echo $this->Form->submit('Update Invoices', array('div' => false, 'name' => 'submit')); 
?> 

<table> 
    <tr> 
     <th>Invoice Number</th> 
     <th>Customer Name</th> 
     <th>Invoice Date</th> 
    </tr> 

    <!-- Here is where we loop through our $invoices array, printing out invoice info --> 

    <?php foreach ($invoices as $invoice): ?> 
     <tr>   
      <td> 
       <?php echo $this->Html->link($invoice['Invoice']['invoiceNumber'], array('action' => 'edit', $invoice['Invoice']['id'])); ?> 
      </td> 
      <td> 
       <?php echo $invoice['Invoice']['customerName']; ?> 
      </td>   
      <td> 
       <?php echo $invoice['Invoice']['invoiceDate']; ?> 
      </td>   
     </tr> 
     <?php 
    endforeach; 
    echo $this->Form->end(); 
    ?> 

</table> 
</div> 

夠簡單。我想從purchaseOrderNumber中獲取值,並使用它來更新後續foreach()中數據集中返回的記錄。儘管我的最佳'淨搜索努力的線索,我還沒有找到我如何做到這一點。我的猜測是,對於更有經驗的開發人員來說,他們覺得沒有必要撰寫這些知識。

任何幫助,將不勝感激。如果你需要更多的解釋,請問。

回答

1

我不確定你對Request對象不瞭解,但這是你可以做的。

提交發票表單後,表單數據可用於您的edit方法。您可以在InvoicesController中使用$this->data(這是隻讀)或$this->request->data(可能會更改)來執行更新查詢。

您的形式$this->data返回的數據結構如下:

array(
    'submit' => 'Update Invoices', 
    'Invoice' => array(
     'id' => '1', 
     'purchaseOrderNumber' => '3' 
    ) 
) 

你不需要提交值,很明顯,但可以使用其他數據檢索與id正確的發票的並用purchaseOrderNumber的進行更新。

的理論更新將被修建這樣的:

$this->Invoice->save($this->data['Invoice']); 

類似於此,更多的逐字,相當於:

$update = array(
    'Invoice' => array(
    'id' => 1, 
    'purchaseOrderNumber' => 3 
) 
); 

$this->Invoice->save($update); 

通過提供id與其他數據,蛋糕「知道」使用UPDATE而不是執行常規的INSERT。

上面的代碼是來自內存,可能包含錯誤,但它應該指向你在正確的方向,希望。

+0

我一定會嘗試一下並更新這個線程。謝謝您的幫助。 – 2012-04-12 14:48:41

+0

我終於找到了訪問該值的正確方法。 $ invoices = $ this-> Invoice-> find('all'); $ this-> set(compact('invoices')); pr($ invoices [0] ['Invoice'] ['purchaseOrderNumber']);現在只需要添加更新 – 2012-04-12 15:43:09

+0

啊,但是對於Invoice模型的表(發票)執行數據庫查詢。我假設你需要表單數據。 – mensch 2012-04-12 18:52:11