2016-09-26 2 views
0

Я продолжал мое изучение с symfony. Но с некоторыми ошибками, которые в этот момент. Я не могу решить. Я использую Symfony3 и Postman, я создаю UserController, и у меня есть ошибка с editAction. Когда я посылаю токен (авторизацию) и пользовательские данные (json) через метод POST. Это сообщение об ошибке, Примечание: Попытка получить свойство необъектныхИзвещение: Попытка получить свойство non-объекта - Symfony 3

500 Внутренняя ошибка сервера - ContextErrorException

http://localhost:8080/curso-fullstack/symfony/web/app_dev.php/user/edit

Это мой UserController код

<?php 

namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Component\HttpFoundation\JsonResponse; 
use BackendBundle\Entity\User; 

class UserController extends Controller { 

    public function newAction(Request $request) { 
     $helpers = $this->get("app.helpers"); 

     $json = $request->get("json", null); 
     $params = json_decode($json); 
     $data = array(
      "status" => "error", 
      "code" => 400, 
      "msg" => "User not created" 
     ); 

     if ($json != null) { 
      $createdAt = new \Datetime("now"); 
      $image = null; 
      $role = "user"; 

      $email = (isset($params->email)) ? $params->email : null; 
      $name = (isset($params->name) && ctype_alpha($params->name)) ? $params->name : null; 
      $surname = (isset($params->surname) && ctype_alpha($params->surname)) ? $params->surname : null; 
      $password = (isset($params->password)) ? $params->password : null; 

      $emailConstraint = new Assert\Email(); 
      $emailConstraint->message = "This email is not valid"; 
      $validate_email = $this->get("validator")->validate($email, $emailConstraint); 

      if ($email != null && count($validate_email) == 0 && 
        $password != null && $name != null && $surname != null 
      ) { 
       $user = new User(); 
       $user->setCreatedAt($createdAt); 
       $user->setImage($image); 
       $user->setRole($role); 
       $user->setEmail($email); 
       $user->setName($name); 
       $user->setSurname($surname); 

       //Cifrar la Password 
       $pwd = hash('sha256', $password); 
       $user->setPassword($pwd); 

       $em = $this->getDoctrine()->getManager(); 
       $isset_user = $em->getRepository("BackendBundle:User")->findBy(
         array(
          "email" => $email 
       )); 
       if (count($isset_user) == 0) { 
        $em->persist($user); 
        $em->flush(); 

        $data["status"] = 'success'; 
        $data["code"] = 200; 
        $data["msg"] = 'New user created !!'; 
       } else { 
        $data = array(
         "status" => "error", 
         "code" => 400, 
         "msg" => "User not created, duplicated" 
        ); 
       } 
      } 
     } 
     return $helpers->json($data); 
    } 

    public function editAction(Request $request) { 
     $helpers = $this->get("app.helpers"); 

     $hash = $request->get("authorization", null); 
     $authCheck = $helpers->authCheck($hash); 

     if ($authCheck == true) { 

      $identity = $helpers->authCheck($hash, true); 

      $em = $this->getDoctrine()->getManager(); 
      $user = $em->getRepository("BackendBundle:User")->findOneBy(array(
        "id" => $identity->sub 
      )); 

      $json = $request->get("json", null); 
      $params = json_decode($json); 

      $data = array(
       "status" => "error", 
       "code" => 400, 
       "msg" => "User not updated" 
      ); 

      if ($json != null) { 
       $createdAt = new \Datetime("now"); 
       $image = null; 
       $role = "user"; 

       $email = (isset($params->email)) ? $params->email : null; 
       $name = (isset($params->name) && ctype_alpha($params->name)) ? $params->name : null; 
       $surname = (isset($params->surname) && ctype_alpha($params->surname)) ? $params->surname : null; 
       $password = (isset($params->password)) ? $params->password : null; 

       $emailContraint = new Assert\Email(); 
       $emailContraint->message = "This email is not valid !!"; 
       $validate_email = $this->get("validator")->validate($email, $emailContraint); 

       if ($email != null && count($validate_email) == 0 && 
        $name != null && $surname != null 
       ) { 
        $user->setCreatedAt($createdAt); 
        //$user->setImage($image); 
        $user->setRole($role); 
        $user->setEmail($email); 
        $user->setName($name); 
        $user->setSurname($surname); 

        if($password != null && !empty($password)){ 
         //Cifrar la password 
         $pwd = hash('sha256', $password); 
         $user->setPassword($pwd); 
        } 

        $em = $this->getDoctrine()->getManager(); 
        $isset_user = $em->getRepository("BackendBundle:User")->findBy(
          array(
           "email" => $email 
        )); 

        if (count($isset_user) == 0 || $identity->email == $email) { 
         $em->persist($user); 
         $em->flush(); 

         $data["status"] = 'success'; 
         $data["code"] = 200; 
         $data["msg"] = 'User updated !!'; 
        } else { 
         $data = array(
          "status" => "error", 
          "code" => 400, 
          "msg" => "User not updated, duplicated!!" 
         ); 
        } 
       } 
      } else { 
       $data = array(
        "status" => "error", 
        "code" => 400, 
        "msg" => "Authorization not valid" 
       ); 
      } 
     } 

     return $helpers->json($data); 
    } 
// public function uploadImageAction(Request $request) { 
//  $helpers = $this->get("app.helpers"); 
// 
//  $hash = $request->get("authorization", null); 
//  $authCheck = $helpers->authCheck($hash); 
// 
//  if ($authCheck) { 
//   $identity = $helpers->authCheck($hash, true); 
// 
//   $em = $this->getDoctrine()->getManager(); 
//   $user = $em->getRepository("BackendBundle:User")->findOneBy(array(
//    "id" => $identity->sub 
//   )); 
// 
//   //Upload File 
//   $file = $request->files->get("image"); 
//   if (!empty($file) && $file != null) { 
//    $ext = $file->guessExtension(); 
//    $file_name = time() . "." . $ext; 
//    $file->move("uploads/users", $file_name); 
// 
//    $user->setImage($file_name); 
//    $em->persist($user); 
//    $em->flush(); 
// 
//    $data = array(
//     "status" => "success", 
//     "code" => 200, 
//     "msg" => "Image for user uploaded success !!" 
//    ); 
//   } else { 
//    $data = array(
//     "status" => "error", 
//     "code" => 400, 
//     "msg" => "Image not uploaded" 
//    ); 
//   } 
//  } else { 
//   $data = array(
//    "status" => "error", 
//    "code" => 400, 
//    "msg" => "Authorization not valid" 
//   ); 
//  } 
//  return $helpers->json($data); 
// } 
} 

I надеюсь, что вы можете дать мне руку

Вот трассировки стека

Stack Trace 
in src\AppBundle\Controller\UserController.php at line 89 - 

      $em = $this->getDoctrine()->getManager(); 
      $user = $em->getRepository("BackendBundle:User")->findOneBy(array(
        "id" => $identity->sub 
      )); 

      $json = $request->get("json", null); 
at ErrorHandler ->handleError ('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\curso-fullstack\symfony\src\AppBundle\Controller\UserController.php', '89', array('request' => object(Request), 'helpers' => object(Helpers), 'hash' => 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjcsImVtYWlsIjoiYXlhbmV6QG1haWwuY2wiLCJuYW1lIjoiQWxlamFuZHJvIiwic3VybmFtZSI6InlhbmV6IiwicGFzc3dvcmQiOiI3MThlMzk3ODUxNmQzODc5MjRkOTE5ODBhN2UyMWFmMmY0MzRkZTQ0NTczMTk1MWE2NTg1YmRhMmVhY2VmMDQ2IiwiaW1hZ2UiOm51bGwsImlhdCI6MTQ3NDg4NTczMywiZXhwIjoxNDc1NDkwNTMzfQ.1Lvbm4op7Xvz9oJ3kerPwnapqj-AbPuHqkEjGlFNgc4', 'authCheck' => true, 'identity' => true, 'em' => object(EntityManager))) 
in src\AppBundle\Controller\UserController.php at line 89 + 
at UserController ->editAction (object(Request)) 
at call_user_func_array (array(object(UserController), 'editAction'), array(object(Request))) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php at line 144 + 
at HttpKernel ->handleRaw (object(Request), '1') 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php at line 64 + 
at HttpKernel ->handle (object(Request), '1', true) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php at line 169 + 
at Kernel ->handle (object(Request)) 
in web\app_dev.php at line 30 + 
Logs - 1 error 
INFO - Matched route "user_edit". 
INFO - Populated the TokenStorage with an anonymous Token. 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". 
DEBUG - Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". 
CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Notice: Trying to get property of non-object" at C:\xampp\htdocs\curso-fullstack\symfony\src\AppBundle\Controller\UserController.php line 89 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". 
DEBUG - Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". 
Stack Trace (Plain Text) + 

Благодаря

+0

Пожалуйста, добавьте полную обратную ошибку ошибки –

+0

Hi Dmitry В ответе ниже приведена ошибка возврата. –

ответ

0

Так $identity, как представляется, быть пустым. Проверьте свою услугу app.helpers

+0

Спасибо за ваш комментарий @Dmitry. Я просмотрел файл app.helpers, а $ identity - null. Теперь это работает. –

Смежные вопросы