Nueva pregunta

Pregunta:

Fecha: 03-03-2019 18:13:53 (En Español)

Error al definir la variable data[Resuelta]

Me esta saliendo un error en Posman
[url=https://ibb.co/zbx47XN][/url]

	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" => "Usuario no actualizado"
			);

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

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

				$emailConstraint = new Assert\Email();
				$emailConstraint->message = "Este correo electrónico no es válido";
				$validate_email = $this->get("validator")->validate($email, $emailConstraint);

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

					if($password != null){
						// 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"] = 'Se ha editado tus datos con exito';
					} else {
						$data = array(
							"status" => "error",
							"code" => 400,
							"msg" => "No se ha podido editar este usuario, porque esta duplicado"
						);
					}
				}
			} else {
				$data = array(
					"status" => "error",
					"code" => 400,
					"msg" => "Autorizacion no valida"
				);
			}
		}
		return $helpers->json($data);
	}
Etiquetas: PHP Votos: 0 - Respuestas: 3 - Vistas: 6 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 04-03-2019 03:15:38 Eso es porque estas intentando retornar la variable en la linea 84 fuera de tui primer if, y antes de este esta no esta declarada, verifica tu arbol de validaciones, esta deberia de esta creo antes del cierre de llave en la linea 83   Votos: 0 - Link respuesta
     
  • Fecha: 04-03-2019 06:49:40 Hola Carlos aprecio tu repuesta a mi pregunta, pero seria de mayor utilidad para mi si colocaras un ejemplo como parte de la respuesta ya que eso que intentas decirme creo verlo hecho sin lograr solucionar el error.   Votos: -1 - Link respuesta
     
  • Fecha: 04-03-2019 10:40:29 Hola Braylin,
    Carlos tiene razón. Se ve claramente en tu código que no estás declarando la variable a tiempo.

    Te dejo el ejemplo. Removí los bloques else que eran innecesarios y los códigos de error son más claros al utilizarlos apropiadamente.

    public function editAction(Request $request)
    {
        $helpers = $this->get('app.helpers');
    
        $hash      = $request->get('authorization', null);
        $authCheck = $helpers->authCheck($hash);
    
        $data = [
            'status' => 'error',
            'code'   => 401,
            'msg'    => 'Fallo al autenticar',
        ];
    
        if ($authCheck === true) {
    
            $identity = $helpers->authCheck($hash, true);
    
            $em   = $this->getDoctrine()->getManager();
            $user = $em->getRepository('BackendBundle:User')->findOneBy([
                                                                            'id' => $identity->sub,
                                                                        ]);
    
            $json   = $request->get('json', null);
            $params = json_decode($json);
    
            $data['code'] = 400;
            $data['msg']  = 'Petición inválida';
    
            if ($json !== null) {
                $createAt = new \Datetime('now');
                $image    = null;
                $role     = 'user';
    
                $email    = isset($params->email) ? $params->email : null;
                $name     = isset($params->name) ? $params->name : null;
                $surname  = isset($params->surname) ? $params->surname : null;
                $password = isset($params->password) ? $params->password : null;
    
                $emailConstraint          = new Assert\Email();
                $emailConstraint->message = 'Este correo electrónico no es válido';
                $validate_email           = $this->get('validator')->validate($email, $emailConstraint);
    
                if ($email !== null && $name !== null && $surname !== null && count($validate_email) === 0) {
                    $user->setCreatedAt($createAt);
                    $user->setImage($image);
                    $user->setRole($role);
                    $user->setEmail($email);
                    $user->setName($name);
                    $user->setSurname($surname);
    
                    if ($password !== null) {
    // Cifrar la password
                        $pwd = hash('sha256', $password);
                        $user->setPassword($pwd);
                    }
    
                    $em         = $this->getDoctrine()->getManager();
                    $isset_user = $em->getRepository('BackendBundle:User')->findBy(
                        [
                            'email' => $email,
                        ]);
    
    
                    $data['code'] = 500;
                    $data['msg']  = 'No se ha podido editar este usuario, porque esta duplicado';
                    
                    if ($identity->email === $email || count($isset_user) === 0) {
                        $em->persist($user);
                        $em->flush();
    
                        $data['status'] = 'success';
                        $data['code']   = 200;
                        $data['msg']    = 'Se ha editado tus datos con exito';
                    }
                }
            }
        }
    
        return $helpers->json($data);
    }
    


    Saludos
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com