2010-11-24 11 views

答えて

3

二つの方法使用して、同じ形で「新」と「編集」で異なることを行うことができました:自分の管理者の設定

を書く

1を

2つのフォームに大きな違いがある場合は、これが好ましい方法です。このファイルはモジュールのconfigフォルダにあります。 "moduleName"はモジュールの名前に置き換えてください。

class moduleNameGeneratorConfiguration extends BaseModuleNameGeneratorConfiguration 
{ 
    public function getForm($object = null, $options = array()) 
    { 
    $options = array_merge($this->getFormOptions(), $options); 
    if ($object && $object->exists()) 
    { 
     return new EditModelForm($object, $options); 
    } 
    else 
    { 
     return new NewModelForm($object, $options);   
    } 
    } 
} 

2.セパレート

形の内部ロジックに有意な差がある場合、これは厄介得ることができますが、あなたは、単に、必要に応じて、フォーム、例えば内部のisNewを呼び出すことができます

public function configure() 
{ 
    if ($this->isNew()) 
    { 
    //do new stuff 
    } 
    else 
    { 
    //do edit stuff 
    } 
} 
0

フロントエンドアプリケーションと同じディレクトリ構造を作成することができ、ジェネレータフォームが上書きされます。たとえば、バックエンドモジュールでindexSuccess.phpファイルを作成します。そのモジュールを読み込むとき、今度はindexSuccess.phpファイルを使用します。

これを行う最も簡単な方法は、/ cacheフォルダからデータをコピーすることです.-基本的に、生成されたバックエンドモジュールファイルをコピーし、必要に応じて変更します。

1

私は

$this->isNew() 
0

アクションに応じて、フォームで使用できるフィールドを指定できます。The form section only exists as a fallback for the edit and new sectionsを参照してください。例えば

generator: 
    param: 
     form: 
     display: 
      group1:    [name, description] 
     edit: 
     title:    Edit item %%name%% 
     fields: 
      #group1:    [name, description] -> inheritance 
      group2:    [only_displayed_when_editing_field] 
     new: 
     title:    New item 
     fields: 
      group1:    [name] #override 
関連する問題