Генератор администратора - Использование различных форм для «редактирования» и «новых» действий - PullRequest
1 голос
/ 24 ноября 2010

Как мне настроить generator.yml так, чтобы он использовал одну форму для действия "new", а другую для действия "edit"?

Ответы [ 4 ]

3 голосов
/ 24 ноября 2010

Два способа:

1. Напишите свою собственную конфигурацию администратора

Это предпочтительный метод, если существуют значительные различия между двумя формами. Этот файл находится в папке конфигурации модуля. «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
  }
}
1 голос
/ 24 ноября 2010

Я мог делать разные вещи в «новом» и «редактировать» в одной форме, используя

$this->isNew() 
0 голосов
/ 24 ноября 2010

Вы можете указать, какие поля доступны в форме, в зависимости от действия, см. Раздел формы существует только как запасной вариант для редактирования и новых разделов .

Например:

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
0 голосов
/ 24 ноября 2010

Вы можете создать ту же структуру каталогов, что и в приложении Frontend, и она переопределит формы генератора.Например, создайте файл indexSuccess.php в своем модуле Backend.При загрузке этого модуля он теперь будет использовать файл indexSuccess.php.

Самый простой способ сделать это - скопировать данные из папки / cache.измените их так, как вы хотите.

...