我继续学习symfony。但有一些错误,在这一刻。我无法解决。 我正在使用Symfony3和Postman,我正在创建UserController,我在editAction中出错。 当我通过POST方法发送令牌(授权)和用户数据(json)时。这是错误消息 注意:尝试获取非对象的属性
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);
// }
}
我希望你能帮我一臂之力
这是堆栈跟踪
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)
所以$identity
似乎是空的。检查您的服务app.helpers