Wenn Sie die Forms-Komponente in Symfony verwenden, gibt es eine Möglichkeit, die Komponente oder Teil des Formulars "View" "Lesen" Teil von CRUD wiederzuverwenden.Symfony CRUD - Formulare und "View"
ich ein Formulartyp (für die Zwecke dieser Frage leicht gemacht) erstellt haben:
class CustomerType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, array('label' => 'Customer Surname'))
->add('submit', SubmitType::class, array('label' => 'Create'))
;
}
}
Für den „Bearbeiten“ Teil ist es einfach:
{{ form_start(form) }}
{{ form_row(form.name) }}
{{ form_end(form) }}
Und die 'form' => $form->createForm()
passieren rendern.
Dadurch werden die Beschriftungen und alles aus der Typdefinition generiert.
jedoch, wenn es um Ansicht Lese kommt, es scheint, ich habe dies zu tun:
<span>Customer Surname</span> {{ data.name }}
Und das 'data' => $customer
Objekt das machen passieren.
Gibt es eine Möglichkeit, die „label“ Teil des Formulars Art zu nehmen und diese zu verwenden, wenn die „Ansicht“ die Schaffung „lesen“ Vorlage so, wenn ich das Etikett aktualisieren es sowohl Änderungen auf der „Ansicht“ "Lesen" und die "Update" Teile?
Formulare scheinen sehr nützlich, vor allem mit Funktionen wie Datentransformation, aber es scheint ein bisschen Codeverdoppelung zwischen dem "update" und der "view" "lesen".
Danke für die Antwort Daniel, aber ich bin mir nicht sicher, ob das beantwortet, was ich zu fragen versuchte. Wenn ich "Ansicht" sage, meine ich eigentlich "lesen", so wie man normalerweise nur Daten von einer Entität anzeigt. –
Ich verstehe, dass Sie 'Kundenname' nur an einer Stelle in Ihrem Code schreiben möchten. Wenn ja, dann sind Übersetzungen der beste Weg, dies zu erreichen. Wenn Sie eine wirklich kleine Menge Code haben möchten, dann setzen Sie das Label nicht in Form. Wird automatisch erstellt, wie zum Beispiel 'app_customer_name', und dann in form_label.html.twig wird es transformiert in 'app.customer.name'. Als nächstes sollten Sie Übersetzungen hinzufügen und Sie können {{'app.customer.name'}} in jeder Ansicht verwenden - lesen, aktualisieren, löschen und einen Teil von crud erstellen. – Daniel