2016-08-02 17 views
0

mein Problem ist, dass ich ein Kontrollkästchen Formular benötigen, das beim Ankreuzen und Übermitteln löscht einen Eintrag aus der Datenbank.Symfony 2.3 mit Checkbox-Formular zum Löschen von Zeile/Eintrag in der Datenbank

sagen wir, ich habe ein Bild in die Datenbank mit einem "Dateityp Feld" hochgeladen und wird irgendwo auf der Seite angezeigt. so in meinem Zweig würde ich ein for-Schleife

<a href="{{ path('z_image_delete', {'id':aimage.id})}}" class="icon-edit" style="position:absolute;"></a> 

in a hat die ID des Bildes zu erhalten, stellt dies ein Symbol, dass, wenn geklickt hat, mit der Route z_image_delete die Aktion geht und wird das Bild löschen verwenden eine Aktion mit einem

remove() und bündig()

ist es eine Möglichkeit, diese gleiche Funktionalität zu haben, wenn ich ein Checkbox Typ-Feld verwenden?

Also würde ich anstelle eines Symbols ein Kontrollkästchen und eine Schaltfläche zum Senden haben und wenn dieses Kontrollkästchen aktiviert und gesendet wurde, würde es das Bild löschen.

Vielen Dank im Voraus

+0

In der Checkbox Werte Sie die ID des Bildes setzen und wenn Sie das Formular in der einreichen Aktion, die Sie überprüft haben, welche Kontrollkästchen aktiviert wurden, um ihren Wert zu erhalten, der der Bild-ID entspricht, und dann können Sie die Bilder leicht löschen. – DOZ

+0

Gibt es eine isChecked-Funktion für das Kontrollkästchen? Es tut mir leid, wenn es eine dumme Frage ist, aber ich bin ganz neu bei Symfony und die Dokumentation für 2.3 verschwand plötzlich von der Seite. @DOZ – Nerdicon

Antwort

0

ein Form mit einem Kontrollkästchen für jedes Bild erstellen.

Verwenden Sie die Bild-ID als ID für das Kontrollkästchen.

Wenn das Formular eingereicht wird, gültig Iterierte über die Bilder wissen, ob ihre Kontrollkästchen aktiviert wurden oder nicht:

use Symfony\Component\HttpFoundation\Request; 

use Symfony\Component\Form\Extension\Core\Type\CheckboxType; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 

public function deleteImagesAction(Request $request){ 

    // ... 

    $images = // ... 

    $formBuilder = $this->createFormBuilder(); 

    foreach($images as $image){ 
     $formBuilder->add($image->getId(),CheckboxType::class,array('label'=>$image->getName(),'required'=>false)); 
    } 

    $formBuilder->add('submit',SubmitType::class); 

    $form = $formBuilder->getForm(); 

    $form->handleRequest($request); 

    if($form->isValid()){ 
     $data = $form->getData(); 

     $em = $this->getDoctrine()->getEntityManager(); 

     foreach($images as $image){ 
      if($data[$image->getId()]){ 
       $em->remove($image); 
      } 
     } 

     $em->flush(); 

     return $this->redirectToRoute(...); 
    } 

    return $this->render(...); 
} 
+0

Ich werde nur eine wirklich blöde Frage stellen, also haben Sie Gnade mit mir, aber die $ Bilder ist es das gleiche wie eine Datenklasse? Würde es den Weg der Entität mit dem tatsächlichen Bild haben? – Nerdicon

+0

habe es gerade, es war das Repository, meine schlechte – Nerdicon

+0

Funktioniert es? Dann akzeptiere bitte die Antwort. – Alsatian