Je me demande simplement pourquoi cela ne fonctionne pas.symfony 3 - le retour du contrôleur sur la fonction séparée génère une erreur
Je reçois l'erreur ci-dessous dans un contrôleur en plaçant le retour JSON dans une méthode distincte:
The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller? (500 Internal Server Error)
La configuration est comme ceci:
contrôleur
namespace UsedBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
...
use Symfony\Component\HttpFoundation\JsonResponse;
class AccountController extends Controller
{
private $status;
private $message;
private $data;
/**
* @Route("/mon-compte", name="account_page")
*/
public function showAccount(Request $request){
$factory = $this->get('security.encoder_factory');
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
throw $this->createAccessDeniedException();
}
$user = $this->getUser();
$session = $request->getSession();
$email = $session->get('email');
$em = $this->getDoctrine('doctrine')->getManager('used');
$this->user_info = $em->getRepository('UsedBundle:User')
->UserAccountInfoAction($email);
$form = $this->createForm(UserType::class, $user);
if ($request->isMethod('POST')) {
if($_POST['action'] == 'update_user'){
$this->updateProfile($request, $user, $form, $em);
}elseif($_POST['action'] == 'delete_user'){
$this->deleteUser($user, $em);
}elseif($_POST['action'] == 'update_password'){
$this->updatePassword($user, $em, $factory);
}
// \Doctrine\Common\Util\Debug::dump($this->data);
$this->returnJson();//***** this is generating the error*****
}else{
// populate change profile form
return $this->render('account/account.html.twig', [
'user_info' => $this->user_info,
'form' => $form->createView(),
]);
}
}
puis , plus bas sur cette classe, j'ai la méthode returnJson():
public function returnJson(){
return new JsonResponse(array(
'status' => $this->status,
'message' => $this->message,
'data' => $this->data,
)
);
}
Si je place ce code en remplaçant $ this-> returnJson() sur showAccount(), cela fonctionnera correctement.
Des idées pour lesquelles le retour ne peut pas être placé comme une méthode distincte? Ou est-ce que je manque quelque chose?
Merci
Merci @svgrafov, c'est tout! – BernardA