Jump to content

Obtener paso actual en checkout


Recommended Posts

En Prestashop 1.7, necesitaría obtener desde la vista del checkout (header.tpl), el último paso completado, con objeto de crear una especie de cuadro de "progreso" del proceso (1-Identificarse, 2-Dirección, 3-Método envío, 4-Pago).

He estado buscando una variable que me permita saber en qué paso del proceso estoy desde la vista, pero no lo he encontrado. Así que he hecho un override del controlador OrderController.php, un poco chapucero, de este modo:

class OrderController extends OrderControllerCore
{
  public function initContent()
  {
    parent:: initContent();
    /** Añadido paso actual **/
    $currentStep = 1;
    foreach ($this->checkoutProcess->getSteps() as $index=>$step) {
      if ($step->isCurrent()) {
        $currentStep = $index+1;
        break;
      }
    }
    $this->context->smarty->assign([
        'current_checkout_step' => $currentStep,
    ]);
    /** Añadido paso actual **/
  }
}

De este modo añado una variable $current_checkout_step que me permite saber desde la vista si estoy en el paso 1, 2, 3 ó 4.

Sin embargo, esta solución me parece bastante chapucera, y estoy convencido de que tiene que haber alguna variable que indique en qué paso del proceso de checkout nos encontramos en cada momento. De hecho, me suena haber leído algo así como que se había añadido esa variable en algún changelog de alguna de las versiones de Prestashop, o en algún otro sitio, aunque he estado buscando y no he sido capaz de localizarlo.

¿Alguien conoce alguna forma mejor de identificar el paso actual en el checkout?

Edited by Prestafan33 (see edit history)
Link to comment
Share on other sites

  • 9 months later...

Hola, con respecto a tu pregunta y en la versión 1.7.6.1 de prestashop:

En el archivo themes/classic/templates/checkout/_partials/steps/checkout-step.tpl puedes verificar la variable $position la cual te indica el paso exacto en el que estas ubicado en ese momento, si necesitas verificar si el paso ya fue completado o no, puedes usar la variable $step_is_complete (1 si esta completo, 0 si no esta completo).

Cabe resaltar que estas variables son asignadas al smarty y no es necesario realizar el override a la clase OrderController.php

 

Espero esto te pueda ayudar ya que es lo que yo hago para imprimir el resumen de la información diligenciada por el cliente.

Link to comment
Share on other sites

  • 3 years later...
On 10/16/2020 at 9:43 AM, Iván Rodríguez - Col said:

Hola, con respecto a tu pregunta y en la versión 1.7.6.1 de prestashop:

En el archivo themes/classic/templates/checkout/_partials/steps/checkout-step.tpl puedes verificar la variable $position la cual te indica el paso exacto en el que estas ubicado en ese momento, si necesitas verificar si el paso ya fue completado o no, puedes usar la variable $step_is_complete (1 si esta completo, 0 si no esta completo).

Cabe resaltar que estas variables son asignadas al smarty y no es necesario realizar el override a la clase OrderController.php

 

Espero esto te pueda ayudar ya que es lo que yo hago para imprimir el resumen de la información diligenciada por el cliente.

Muchas gracias @Iván Rodríguez - Col por tu comentaro, me fue de mucha utilidad

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...