2016-11-07 1 views
0

Ich habe ein Problem mit meinem Projekt. Mein Problem existiert, wenn ich versuche, einige Daten von der Entität zu löschen. Mein Controller wurde mit Sesio Generator generiert. Hier ist mein Code:Symfony2 Form Methoden diffrent in Prod und Dev Version

/** 
* Deletes 
* @Route("/{id}/delete", name="delete") 
* @Method({"DELETE"}) 
*/ 
public function deleteAction(Request $request, Task $task) { 

    $form = $this->createDeleteForm($task); 
    $form->handleRequest($request); 


    if ($form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->remove($task); 
     $em->flush(); 
     $this->get('session')->getFlashBag()->add('notice_success', 'Success'); 
    } else { 
     $this->get('session')->getFlashBag()->add('notice_error', 'NO DELETE'); 
    } 
    return $this->redirectToRoute('task'); 
} 

/** 
* Creates a form to delete. 
*/ 
private function createDeleteForm(Task $task) { 
    return $this->createFormBuilder() 
        ->setAction($this->generateUrl('delete', array('id' => $task->getId()))) 

        ->add('submit', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, array('label' => 'Delete')) 
        ->getForm() 
    ; 
} 

Ich muss Ihnen sagen, dass dieser Code Arbeit schön auf DEV (app_dev.php), aber es ist nicht in ART-Version arbeiten.

Ich versuche, dieses Problem zu lösen, und ich habe versucht, Formularmethode zu POST zu ändern, und es funktioniert Eigenschaft PROD und DEV. Es sieht aus wie DELETE-Methode funktioniert nicht in PROD-Version.

Jemand hat ein ähnliches Problem?

+1

Wenn Sie Ihre Anwendung in prod Modus zuzugreifen, müssen Sie den Cache für das löschen Umgebung: '$ php bin/Konsolencache: clear --env = prod'. Möglicherweise müssen Sie auch die Zugriffsrechte für die Verzeichnisse "var/cache", "var/logs" und "var/sessions" festlegen: '$ sudo chmod 777 -R var/cache var/logs/var/sessions' davor und danach Sie verwenden den Konsolenbefehl 'cache: clear'. Dann probier es aus. –

Antwort

0

Wenn Sie den AppCache verwenden, ignoriert der Kernel den für die DELETE-Methode hinzugefügten Parameter _method.

Um das Problem in Ihrem web/app.php Aufruf Request::enableHttpMethodParameterOverride(); vor dem Erstellen des Request-Objekts zu lösen:

... 
$kernel = new AppCache($kernel); 
Request::enableHttpMethodParameterOverride();// <-- add this line 
$request = Request::createFromGlobals(); 
... 

Siehe http://symfony.com/doc/current/form/action_method.html und http://symfony.com/doc/current/reference/configuration/framework.html#configuration-framework-http-method-override

Verwandte Themen