2012-02-23 5 views
0

私はいくつかのモデルを更新したい編集フォームを持っています。問題は、私のメインモデルであるUnits、belongsTo Location(1つのLocationがたくさんのユニットを持つことができるので)です。 cakephpのマニュアルでは、関連するモデルデータがメインモデルに属しているときにsaveAllをどのように保存するかについて説明しますが、逆の仕組みはありません。私が明らかに使用するコードは、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.');    

     } 
    } 
} 

注:私も、エコーの$ this - >フォーム - >入力( '場所を使用しようとしました。住所');私のために自分のフィールドを美しく埋め込んでいますが、私がそれを変更してもロケーションアドレスは更新されません。

UPDATEは 私は自分のフォームを送信する際に、ケーキではなく、場所の住所を更新する、すべての新しい情報で新しい場所を追加することを発見しました!

第二UPDATE 私もケーキがRELATEDモデルデータのための新しいレコード(メインモデルbelongsToのこと)を保存する一方、更に、それはユニット(メインモデル)情報を更新しないことを発見しました。

答えて

0

あなたは場所IDを渡す必要があります。新しい住所だと思われます。

一般的には、これを行う方法は、ユニットを追加する場所を選択できるようにするドロップダウン(id/name)内のさまざまな場所を表示することです。すでにユニットが分かっている場合は、Location.idを隠しフィールドとして含めて、location.addressだけを表示し、フォームの一部としては表示しないでください。

+0

私の周りを大騒ぎした後、私はこれを見つけました。私がケーキを手に入れようとしているような気がするたびに、私は振り返ってみると、それが早く見られないというばかげた気分になります。あなたの助けをもう一度ありがとう! – huzzah

+1

アイデアはあなたが続けることです。私たちは皆、いつも脳の痙攣を起こす。アイデアを跳ね返す人がいるのは良いことです。ハッピーコーディング! –

関連する問題