Ich habe dieses Problem für eine Weile konfrontiert, aber Symfony überrascht mich immer mit einem ordentlichen Code, den ich nicht kannte.
Ich nehme an, Sie verwenden sfPropelPlugin, ganz normal, wenn Sie den im Cache generierten Code auschecken (Hinweis: Dieser Code wird verfügbar sein, sobald Sie versuchten, das Modul aus dem Browser zu öffnen, so versuchen Sie es zuerst zu sehen wir bekommen nicht in Schwierigkeiten: P) Sie so etwas wie sehen können:
cache/{application_name}(generally frontend or backend)/dev(enviromnemt)/autoModule_name(look here for the module)/
:
T Der Aktionsordner enthält eine action.class.php-Datei, die alle Aktionen definiert, die vom Generator generiert werden (executeNew, Edit, Create, Update, usw.). Wenn Sie ein, die Umsetzung von executeNew und executeEdit anschaut, kann man sehen, dass sie eine Konfiguration instace die tatsächliche Form fragen, hier angezeigt ein Beispiel:
public function executeNew(sfWebRequest $request)
{
$this->form = $this->configuration->getForm();
$this->PaymentOrder = $this->form->getObject();
}
Die Konfiguration var containt eine Instanz einer Konfigurationsklasse definiert in der lib-Ordner, den ich bereits erwähnt habe. Diese Klasse passt das Formular an die Objektanforderungen an (in der Regel durch Festlegen einer neuen Objektinstanz).
Also hier kommt die Magie, die Klassen, die Sie in Ihrem Modul sehen, von denen im Cache, also von reiner Logik, wenn Sie die getForm()
Methode im Hauptmodul/lib Ordner auf Ihre Bedürfnisse anpassen, müssen Sie nicht hacken Sie Formulare, indem Sie Benutzerschätzer erhalten, wo Sie nicht sollten.
Hoffe, das hilft!
Das Überschreiben der "sfModelGeneratorConfiguration :: getForm" -Methode in myModuleGeneratorConfiguration könnte funktionieren, würde mich aber immer noch dazu veranlassen, sfContext zu verwenden, um das aktuelle sf_user-Objekt abzurufen – jolly18