2012-02-23 36 views
0

我有一個編輯表單,我想更新一些模型。問題在於我的主要模型Units屬於Location(因爲一個Location可以擁有多個Unit)。 cakephp手冊介紹瞭如何在您的相關模型數據屬於您的主模型時保存所有內容,但不是如何以相反方式運行。下面我使用的代碼顯然不會更新Location.address。如何在主模型歸屬時編輯模型到相關模型?

從edit.ctp:

<?php  
echo $this->Form->create('Unit', array('url'=>array('action' =>'edit')); 
echo $this->Form->input('unitnum', array('label' => 'Unit\'s Name/Number')); 
echo $this->Form->input('Location.0.address'); 

echo $this->Form->end('Update Property');?> 

這裏是我的控制器代碼:

function edit($id) { 
$this->Unit->id = $id;  
if (empty($this->data)) {   
$this->data = $this->Unit->read();  
} else {   
    if ($this->Unit->saveAll($this->data)) {    
     $this->Session->setFlash('Your property has been updated.');    

     } 
    } 
} 

注:我也曾嘗試使用echo $這個 - >形式 - >輸入(「位置。地址');雖然它精美地爲我填充我的領域,但如果我更改它,它仍然不更新位置地址。

UPDATE 我發現,當我提交表單,蛋糕,而不是更新位置的地址,增加了一個新的位置,所有的新的信息!

月2日更新 我還發現,另外,雖然蛋糕會保存一個新的記錄相關的數據模型(主模型屬於關聯),它不會更新單元(主模型)的信息。

回答

0

您需要傳遞位置ID,否則它會認爲它是新地址。

通常,這樣做的方式是在下拉列表中顯示各種位置(ID /名稱),這將允許您選擇要添加單元的位置。如果您已經知道該單位,那麼您應該將Location.id作爲隱藏字段加入,然後僅顯示location.address,而不是表單的一部分。

+0

在經歷了很多困難之後,我偶然發現了這一點。每當我覺得我開始接觸蛋糕時,我會做一些回想起來的事情,讓我感覺自己像是一個白癡,因爲沒有及時看到它。再次感謝你的幫助! – huzzah 2012-02-24 15:37:11

+1

這個想法是,你繼續前進。我們都會腦部抽筋......無時無刻。有人可以將想法反彈出來很好。快樂的編碼! – 2012-02-24 15:43:04

相關問題