es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Mostrar información de usuario a través de modelo?

Tengo el siguiente problema / pregunta. Estoy trabajando en mi proyecto de Tienda en línea (PHP puro + MySQL) y hasta ahora he creado el registro, inicio de sesión, productos, etc., utilizando el Patrón MVC / Modelo. Cuando el usuario inicia sesión, guardaré únicamente el correo electrónico en la sesión ($_SESSION[$customerReposutory->getEmail()]), y redirigiré al panel de control. El problema es que quiero mostrar alguna información (por ejemplo, el nombre y el apellido) y hacer un mensaje de bienvenida para el usuario dentro del panel de control.

Hice esta función que buscará al usuario que ha iniciado sesión.

public function userData(string $email)
{
return $this->customerRepository->getByEmail($email);
}

Después se llama dentro del Controlador del Panel de Control:

public function dashboard(): void {
$this->loginService->accessDashboard();
// Obtener el correo electrónico de la sesión
$getLoginInfo=$_SESSION[‘login’];
// Buscar usuarios con un correo electrónico específico
$firstName=$this->loginService->userData($getLoginInfo);
// Renderizar en la Vista
$this->render(‘dashboard’, [‘firstName’=>$firstName]);
}

Repositorio:

public function getByEmail(string $email)
{
$tableName = $this->setTableName();
$className = $this->setClassName();
$statement = $this->connection->prepare(“SELECT * FROM $tableName WHERE email=:email”);
$statement->execute([’email’ => $email]);
// Modelo de Cliente -> id, nombre, apellido, contraseña, correo electrónico
$statement->setFetchMode(PDO::FETCH_CLASS, $className);
return $statement->fetch(PDO::FETCH_CLASS);
}

Lo que quiero es acceder a la información a través del Modelo (clase) dentro de la Vista, utilizando:
$customer->getFirstName() y no como objeto $customer->first name.
En este momento, solo se puede acceder al método de correo electrónico desde el modelo: $customer->getEmail()

¡Gracias por su tiempo!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para acceder a otra información del usuario conectado en la vista del panel de control, debes agregar métodos getter para esos campos en tu clase Customer del modelo. Por ejemplo, para acceder al campo del nombre, agregarías un método como este a la clase Customer:

    public function getFirstName(): string
    {
        return $this->first_name;
    }
    

    Luego, en tu vista del panel de control, puedes llamar a este método en el objeto de cliente pasado desde el controlador:

    Bienvenido <?php echo $customer->getFirstName(); ?>
    

    Asegúrate también de actualizar el método getByEmail en tu repositorio para seleccionar todos los campos de la tabla de clientes, de modo que el objeto del cliente devuelto por ese método tenga acceso a todos los datos relevantes.

Comments are closed.