Uso del objeto context en Prestashop 1.5.x

El objeto context es una característica técnica introducida en la versión 1.5 de Prestashop para evitar que los programadores empleen variables globales y sea más fácil obtener información de contexxto en algunos controladores o módulos.

El objeto context es un registro de las variables PHP que, en versiones anteriores de Prestashop se utilizaban como globales, como por ejemplo: $cookie, $smarty…

El objetivo del objeto context es estandarizar el modo de acceso a estas variables haciendo que el código sea más sólido y fácil de entender eliminando el uso de variables globales.

En Prestashop 1.4 podíamos utilizar las variables globales para obtener información importante en un momento dado. Por ejemplo, para obtener el idioma que utiliza el cliente empleamos:

$cookie->id_lang;

En Prestashop 1.5, la forma correcta de acceder a este valor es utilizar el objeto context:

$this->context->language->id;

 Contenido del objeto context

  • Language. Lenguage del cliente o empleado.
  • Country. Toda la información del país del cliente que está en linea.
  • Currency. La moneda del cliente o la moneda de la tienda.
  • Shop. Tienda actual.
  • Cookie. Toda la información referente a la cookie o sesión establecida.
  • Link. Instancia Link actual.
  • Smarty. Instancia Smarty.
  • Customer. Toda la nformación referente al cliente en linea.
  • Cart. Toda la información referente al carrito actual.
  • Controller. Instancia del controlador actual.
  • Employee. Empleado actual.

Desde cualquier clase o controlador podemos hacer uso del objeto context de la siguiente forma:

$this->context->...

También podemos capturar información del contexto en las plantillas .tpl de la siguiente forma:

Context::getContext()->...

Ejemplos:

$this->context->language->id; //Retorna el identificador del lenguaje actual
$this->context->language->iso_code; //Retorna el identificador ISO del lenguaje actual
$this->context->currency; //Retorna el objeto moneda actual
$this->context->link; //Retorna el objeto link
$this->context->country->id_zone; //Retorna el identificador de la zona del cliente actual
if ($this->context->customer->isLogged()) //Comprobación de si está el cliente logeado o no
if ($this->context->employee->isLoggedBack()) //Comprobación de si está logeado el empleado administrador
$this->context->cart->getProducts(); //Retorna los productos que hay en la cesta actualmente
$this->context->smarty->assign(...); //Asignación de variables smarty para la plantilla
$this->context->customer->birthday; //Retorna la fecha de nacimiento del cliente en linea
$this->context->cms->id; //Retorna el identficador de la página cms que se está visualizando

Como podemos ver toda la información de contexto?

En cualquier controlador o clase podemos visualizar el array de objetos de la siguiente forma:

echo '<pre>';
print_r($this->context);
echo '</pre>';
Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(6 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

3 respuestas a “Uso del objeto context en Prestashop 1.5.x”

  1. Daniel Torres dice:

    Hola!
    En el último parrafo dices:
    «En cualquier controlador o clase podemos visualizar el array de objetos de la siguiente forma:»
    Como se podría visualizar esta información en un controlador, por ejemplo?

  2. […] A partir de la versión 1.5.x debemos saber que tenemos disponible el objecto Context que dispone de mucha información sobre el contexto en los controladores y módulos. En un artículo anterior sobre Prestashop, hablamos de como se usa el objecto Context. […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre