Controller: < /p>
Code: Select all
public function deleteAction(Request $request, ACRGroup $aCRGroup)
{
$form = $this->createDeleteForm($aCRGroup);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//Check for related entities (if found, prevent deletion)
$reasons ="";
//Users
if (!$aCRGroup->getUsers()->isEmpty()) {
$reasons .= 'användare ';
}
//DebitPeriods
if (!$aCRGroup->getDebitPeriods()->isEmpty()) {
$reasons .= 'debiteringsperioder ';
}
//Analysis
if (!$aCRGroup->getAnalysis()->isEmpty()) {
$reasons .= 'analyser(flygsäkerhetsbedömningar) ';
}
//Positions
if (!$aCRGroup->getPositions()->isEmpty()) {
$reasons .= 'positioner ';
}
if (strlen($reasons)>0) {
$this->helper->flash('fail','Kunde inte radera gruppen '.$aCRGroup->getName().' eftersom det finns '.$reasons.' knutna till den.');
return $this->redirectToRoute('group_index');
} else {
$groupName = $aCRGroup->getName();
$em = $this->em;
$em->remove($aCRGroup);
$em->flush($aCRGroup);
$this->helper->flash('success','Raderade gruppen '.$groupName);
return $this->redirectToRoute('group_index');
}
}
< /code>
Formular: < /p>
*/
private function createDeleteForm(ACRGroup $aCRGroup)
{
return $this->createFormBuilder()
->setAction($this->generateUrl('group_delete', array('id' => $aCRGroup->getId())))
->setMethod('DELETE')
->getForm()
;
}
< /code>
Das Formular sieht so aus, wenn er rendert < /p>
< /code>
Routing: < /p>
group_delete:
path: /{id}/delete
defaults: { _controller: App\Controller\ACRGroupController::deleteAction }
methods: DELETE
no route found for "POST
http://localhost:8888/webtools/public/group/20/delete": Method Not
Allowed (Allow: DELETE)
Changing the routing to methods: POST ... < /p>
group_delete:
path: /{id}/delete
defaults: { _controller: App\Controller\ACRGroupController::deleteAction }
methods: POST
< /code>
... damit der Code in den Controller eintritt, aber der Test für < /p>
if ($form->isSubmitted() && $form->isValid())
< /code>
Gibt immer false zurück. Ein DD ($ -Form) zeigt, dass das Formular, das in der Tat gleich falsch ist. Ändern der Form der Formulargenerierung, die zu dem Beitrag übereinstimmt ... < /p>
->setMethod('DELETE')
< /code>
... lässt alles wieder funktionieren. Habe ich hier etwas vermisst, ist nicht der Standard der Löschung inzwischen?