Comment puis-je configurer generator.yml pour qu'il utilisera un formulaire pour l' action « nouveau », et un autre pour l'action « modifier »?générateur Admin - En utilisant différentes formes de « modifier » et « nouvelles » actions
Répondre
Deux façons:
1. Écrivez votre propre configuration admin
C'est la méthode préférée s'il y a des différences significatives entre les deux formes. Ce fichier va dans le dossier config du module. "moduleName" doit être remplacé par le nom du module.
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. Séparer la logique à l'intérieur de la forme
Cela peut être gênant s'il y a des différences importantes, mais vous pouvez simplement appeler isNew
l'intérieur de la forme nécessaire, par exemple
public function configure()
{
if ($this->isNew())
{
//do new stuff
}
else
{
//do edit stuff
}
}
Vous pouvez créer la même structure de répertoire que dans l'application Frontend et remplacer les formes de générateur. Par exemple, créez un fichier indexSuccess.php dans votre module Backend. Lors du chargement de ce module, il utilisera le fichier indexSuccess.php maintenant. La manière la plus simple de procéder consiste à copier les données de votre dossier/cache - Copiez les fichiers du module backend générés et modifiez-les comme vous le souhaitez.
j'ai pu faire des choses différentes dans la "nouvelle" et "modifier" dans la même forme, en utilisant
$this->isNew()
Vous pouvez spécifier quel champ sont disponibles sous une forme en fonction de l'action, voir The form section only exists as a fallback for the edit and new sections.
Par exemple:
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