Wie konfiguriere ich generator.yml, so dass es ein Formular für die "neue" Aktion und eine andere für die Aktion "bearbeiten" verwendet?Admin Generator - Verwenden verschiedener Formulare für "bearbeiten" und "neue" Aktionen
Antwort
Zwei Möglichkeiten mit:
1. Schreiben Sie Ihre eigene Admin-Konfiguration
Dies ist die bevorzugte Methode, wenn zwischen den beiden Formen signifikante Unterschiede bestehen. Diese Datei wird in den Konfigurationsordner des Moduls geschrieben. "moduleName" sollte durch den Namen des Moduls ersetzt werden.
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. Trennen Sie die Logik in der Form
Dies kann chaotisch, wenn es erhebliche Unterschiede gibt, aber Sie können einfach isNew
Innere der Form nennen, wie erforderlich, z.B.
public function configure()
{
if ($this->isNew())
{
//do new stuff
}
else
{
//do edit stuff
}
}
Sie können dieselbe Verzeichnisstruktur wie in der Frontend-Anwendung erstellen und die Generatorformulare überschreiben. Erstellen Sie beispielsweise eine indexSuccess.php-Datei in Ihrem Back-End-Modul. Beim Laden dieses Moduls wird jetzt die Datei indexSuccess.php verwendet.
Der einfachste Weg, dies zu tun, ist das Kopieren von Daten aus Ihrem/Cache-Ordner - Im Grunde kopieren Sie die generierten Backend-Modul-Dateien, und ändern Sie sie wie Sie wollen.
konnte ich verschiedene Dinge in "neuen" und "Bearbeiten" in der gleichen Form tun,
$this->isNew()
Sie können angeben, welche Felder in einem Formular abhängig von der Aktion verfügbar sind, siehe The form section only exists as a fallback for the edit and new sections.
Zum Beispiel:
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