Wie fügen Sie einige zusätzliche Daten zu einer symfony 2 form
Ich habe ein Formular für meine Entität namens Book
und ich haben eine Art, ein Formular anzuzeigen, in meinen Augen. In dieser Art habe ich einige Felder zugeordnet sind, um die Eigenschaften in meiner Person.
Nun möchte ich hinzufügen, dass ein anderes Feld, das nicht zugeordnet ist, die in meiner Person und liefern einige anfängliche Daten für das Feld während der Formular-Erstellung.
Mein Typ sieht aus wie dieser
//BookBundle\Type\Book
public function buildForm(FormBuilderInterface $builder, array $options = null)
{
$builder->add('title');
$builder->add('another_field', null, array(
'mapped' => false
));
}
Das Formular erzeugt wird, wie dies
$book = $repository->find(1);
$form = $this->createForm(new BookType(), $book);
Wie kann ich liefern einige erste Daten nun während der Formular-Erstellung? Oder wie muss ich ändern, dass die Einrichtung das Formular zum hinzufügen von ersten Daten an die another_field
Feld?
- Was du tust, zu planen mit dem Feld nicht zugeordnet der Entität?
- Ich möchte die eingegebenen Daten aus dem Formular oder der Anfrage und die Verarbeitung der Daten manuell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe auch ein Formular hat Felder, die meist match eine zuvor definierte Entität, sondern eine von den form-Feldern zugeordnet hat auf false gesetzt.
Zu bekommen, um dieses in den controller, können Sie ihm einige erste Daten ganz einfach so:
einfach ist das. Dann, wenn Sie die Verarbeitung der Formular-Daten, um bereit, es zu speichern, können Sie den Zugriff auf die nicht-gemappten Daten mit:
get()
Aufrufe:$form->get('nonMappedSubForm')->get('subFormField')->setData(...)
.Ein Vorschlag könnte sein, fügen Sie einen Konstruktor-argument (oder Set) auf Ihrem BookType, dass auch die "another_field" Daten "und in der" Argumente hinzufügen, setzen Sie den 'data' parameter:
Dann konstruieren:
Können Sie ändern Sie den request-Parametern zu unterstützen, das Formular mit zusätzlichen Daten:
Diese Weise Ihrem Formular füllen Sie die richtigen Werte für Ihren Bereich darstellen. Wenn Sie möchten, liefern viele Felder kann dies eine option sein.