Jump to content

Edit History

Prestafan33

Prestafan33

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?

Prestafan33

Prestafan33

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 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, aun

×
×
  • Create New...