2011-08-12 20 views
0

私はテーブルを持っている:編集いくつかのフィールドが

id | cat_id | name 
1 | 1  | aaa 
2 | 1  | bbb 
3 | 2  | ccc 
4 | 3  | ddd 
5 | 2  | eee 
6 | 1  | fff 

私はsite.com/table/edit/id/1 に行き、私の入力

name (id 1) [ aaa ] (i hide other field) 

を示し、どのようにすることができ、私はID 1を編集することができますすることができます私は何かを作る:

site.com/table/edit/cat_id/1 と私を見せる:

name (id1) [ aaa ] 
name (id2) [ bbb ] 
name (id6) [ fff ] 

と編集して保存できます。これを行う方法?

答えて

1

これはデフォルトの生成フォームでは実現しません。しかし、独自のフォームを作成するのは簡単です(sfFormから拡張し、setup()関数を実装するだけです)。次に、save()機能で独自のロジックを追加します。

擬似コード:

class myForm extends sfForm { 
    public function setup() { 
    $models = //; 

    foreach($models as $model) { 
     $this->addWidget(new sfWidgetFormInputText()); 
     $this->addValidator(new sfValidatorString()); 
    } 
    } 

    public function save() { 
    // loop through the widgets and save if valid. 
    } 
} 

EDIT:うーん...私はあなたにも一つの形を作ることができると思うし、サブフォームなど、すべての編集フォームを追加します。

+0

どうすればいいですか?私は自分のフォームを作成することができます –

+0

私はいくつかの擬似コード –

+0

を追加しましたが、この$ this-> addWidget(新しいsfWidgetFormInputText()); は同じウィジェットを生成しました。私は$モデルで書く必要がありますか?私のテーブル "TableTable.class"のクエリ? –