FormComponent – ​​Entität mit Formular an Vorlage übergebenPhp

PHP-Programmierer chatten hier
Anonymous
 FormComponent – ​​Entität mit Formular an Vorlage übergeben

Post by Anonymous »

Sagen wir, ich habe eine Eins-zu-viele-Beziehung:
  • Ein Unternehmen kann mehrere Bilder besitzen
    < li>Ich habe eine Firmenentität und eine Bildentität
Jetzt möchte ich alle Bilder eines Unternehmens in einer Vorlage anzeigen. Und ich möchte diese Bilder auch direkt bearbeitbar machen. Ich habe darüber nachgedacht, jeder Entität der DoctrineArrayCollection ein Formular hinzuzufügen und sie an die Vorlage zu übergeben. Wenn in der Vorlage jemand auf ein Bild klickt, sollte das entsprechende Bild eingeblendet werden, er sollte in der Lage sein, die Bildbeschreibung zu bearbeiten und sie über Ajax an einen Controller weiterzuleiten.

In meinem Entität Ich habe ein Feld ohne Anmerkungen hinzugefügt:

private $form;

public function setForm(MyPictureForm $form)
{
$this->form = $form;
}

public function getForm()
{
return $this->form;
}


Jetzt füge ich in meinem Controller eine Formularinstanz zu jedem Bild des Unternehmens hinzu:

//office images with forms
$officeImages = array();
foreach($company->getOfficeImages() as $image)
{
$form = $this->get('companybundle.imagedescription.form.factory')->createForm();
$form->setData($image);
$image->setForm($form->createView());
array_push($officeImages, $image);
}

return $this->render('CompanyBundle:Company:Show/show.html.twig', array(
'company' => $company,
'officeImages' => $officeImages
));

}


Und in meiner Vorlage rendere ich es so:

{% for image in officeImages %}


{% if image.image %}
Image
alt="{% if image.description %}{{ company.description }}{% endif %}"/>
{% else %}
{% image '@UserBundle/Resources/public/img/nopic_logo.jpg' output='/images/nopic_logo.jpg' %}
Image
{% endimage %}
{% endif %}


{{ form(image.form) }}
{% else %}
Es sind noch keine Images vorhanden
{% endfor %}


Am Ende gibt es eine Menge Javascript-Sachen, die das Ein- und Ausblenden des Formulars und das Absenden übernehmen.

Ist das die richtige Art und Weise, meinen Fall zu bearbeiten? Ich glaube nicht, dass das Übergeben eines Formulars für jedes Bild einen Mehraufwand bedeutet?

Der Grund, warum ich mit Formularen arbeite, anstatt einfach Daten aus einem manuell hinzugefügten Eingabefeld zu übergeben, ist CSRF-Schutz und die intelligente Verwendung der Formularkomponente.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post