[英]Notice: Trying to get property of non-object - Symfony 3
I've continued my learning with symfony. 我继续用symfony学习。 But with some errors, which in this moment.
但是有一些错误,在此刻。 I cant resolve.
我无法解决。 I'm using Symfony3 and Postman, I'm creating the UserController, and I have an error with editAction.
我正在使用Symfony3和Postman,正在创建UserController,并且editAction出错。 When I send a token (authorization) and the user data (json) through POST method.
当我通过POST方法发送令牌(授权)和用户数据(json)时。 This is the error message Notice: Trying to get property of non-object
这是错误消息注意:试图获取非对象的属性
500 Internal Server Error - ContextErrorException 500内部服务器错误-ContextErrorException
http://localhost:8080/curso-fullstack/symfony/web/app_dev.php/user/edit http:// localhost:8080 / curso-fullstack / symfony / web / app_dev.php / user / edit
This is my UserController code 这是我的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 hope you can give me a hand 希望你能帮帮我
Here is stack trace 这是堆栈跟踪
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) +
Thanks 谢谢
So $identity
appears to be null. 因此
$identity
似乎为空。 Check your service app.helpers
检查您的服务
app.helpers
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.