Jump to content

Ajouter une étapes (ou un champs) dans la validation de commande


Recommended Posts

Bonjour,

Je suis en Prestashop 1.7.2.4

Je cherche à rajouter une 5em étapes lors d'une commande quand une condition est présente (la condition c'est si variable que j'ai ajouter à un produit est à 1) qui demanderais une informations au client (et qui serais alors obligatoire).

Ou bien si c'est trop compliquer d'ajouter une étapes au moins pouvoir ajouter un champs (toujours obligatoire) pour récupérer cette informations (si elle n'est pas visible depuis le backoffice tant pis. Cette variable serais ajouter soit dans la table ps_order dans un nouveau champs soit (si possible facilement) dans une nouvelle table.

 

j'ai trouvé quelques pistes en vains comme celle-ci : 

https://www.prestashop.com/forums/topic/241470-adding-a-custom-field-during-the-checkout-process/

 

(d'ailleurs questions supplémentaires, un override de classes se fait dans le dossier racines override ? Pas dans le module ?)

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

Salut Dokimedia,

 

Je ne suis pas du tout expert en Prestashop, cependant j'aurai ajouté une étape supplémentaire via un ModuleFrontController (afin de créer une nouvelle page), j'aurai ajouter un lien dans la dernière étape menant a mon module puis mon module aurait envoyer les informations "normal" en plus des nouvelles de l'étapes 5.

 

Tu peux créer un dossier "override" à la racine de ton module, Prestashop se chargera de copier les fichiers dans le dossier "override" general. L'override permettra dans ton exemple de modifier la partie de la 4 ème étapes...

 

Bon courage !

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

Bonjour,

J'ai réussi à ajouter une étape en modifiant plusieurs fichier.

J'ai créé dans mon thème un fichier Etape.tpl (dans templates/checkout/_partials )

Puis j'ai modifier le controllers situer dans (racine/controllers/front/OrderController) (comment je pourrais l'override ?) 

J'ai modifier la function bootstrap() en ajoutant tout simplement un step :

$this->checkoutProcess->addStep(new CheckoutEtapeStep($this-context, $translator));

Puis j'ai créé mon step dans : classes/checkout/CheckoutEtapeStep.php

use Symfony\Component\Translation\TranslatorInterface;

class CheckoutEtapeStepCore extends AbstractCheckoutStep
{
    protected $template = 'checkout/_partials/steps/etape.tpl';


    public function handleRequest(array $requestParams = array())
    {
        $this->setTitle(
            $this->getTranslator()->trans(
                'Etape',
                array(),
                'Shop.Theme.Checkout'
            )
        );
        
        if ($this->step_is_reachable && isset($requestParams['confirm-Etape'])) {
            
            $var = $_POST['var'];
			$this->step_is_complete = true;
        }
    }

    public function render(array $extraParams = array())
    {
        
        return $this->renderTemplate($this->getTemplate(), $extraParams);
    }

}

Voilà si ça peux aider des gens.

J'ai du coup réussi à recuperer via le $_POST la variable mais je n'arrive pas à la reinjecter dans le champs du formulaire (du côté tpl si je fait {smarty.post.var} je n'ai rien du tout). On à donc l'impression que le champs est vide (alors qu'il est remplie).

J'aurais souhaiter aussi savoir comment je pouvais stocker une variable "globale" à la commande (le champs que je récupère ici dois être ajouter lors de la validation de commande dans la table orders).

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...