Détail du message 77790.8

Message numéro 8 dans le sujet Envoi d'informations supplimentaires - Module Ordre.

  • 77790.8 en réponse à 77790.7 écrit par mamous

    27/04/2013 12:54


    Mathias
    Rang : Expert
    Bonjour Mamous,

    Je pars du principe que tu n'as pas besoin de faire de requête sur ce type de champs (ça te donnera déjà une bonne idée de ce qu'il faut faire, on verra plus tard si tu en as besoin ou pas).

    [pour info, l'objet createQuery est disponible sur TOUS les documents et te permet de faire des requêtes en BDD pour récupérer des instance du document souhaité, donc ce n'est pas parce que tu l'utilise sur ton document spé que tu l'utilise obligatoirement sur le document order ;)]

    Pour que tes champs spécifiques soient enregistrés au moment où tu valides le panier, il faut que ces champs soient au sein du formulaire HTML qui est soumis via le input type=submit associé.

    Dans le cas du panier, c'est à la ligne 242 du template Order-Block-Cart-Success.all.all.html :
    <form change:form="">
    			<fieldset tal:define="generalSalesConditionsURL tagurl:'ctx_order_cgv'">
    				<legend class="h-2">${trans:m.order.frontoffice.orderProcess.do-order,ucf}</legend>
    				<tal:block tal:condition="not: configuration/getShowAcceptationCheckbox">
    					<p class="normal">${trans:m.order.fo.general-sales-conditions-help,ucf,url=generalSalesConditionsURL}</p>
    				</tal:block>
    				<tal:block tal:condition="configuration/getShowAcceptationCheckbox">
    					<ul change:errors="relKey cgv"></ul>
    					<p class="normal">${trans:m.order.fo.general-sales-conditions-checkbox-help,ucf,url=generalSalesConditionsURL}</p>		
    					<ol>
    						<li><label change:label="" name="cgv_1" required="true" labeli18n="m.order.frontoffice.orderprocess.cgv"></label> 
    							<input change:checkboxinput="withcolon false" name="cgv" value="true" labeli18n="m.order.frontoffice.orderprocess.cgv-agree" />
    						</li>
    					</ol>
    				</tal:block>
    				<p class="buttons">
    					<a class="link" change:link="module order; action ContinueShopping; cmpref cart/getShopId">${trans:m.order.frontoffice.continue-shopping,ucf}</a>
    					<input change:submit="name Order" class="button primary" labeli18n="m.order.frontoffice.order-button" />
    				</p>
    			</fieldset>			
    		</form>

    Je présume que le HTML de ta vue SUCCESS de ton block spé est du genre (ni plus, ni moins) :
    <input type="Boolean" value="XXX" />
    <textarea>XXX</textarea>


    Donc désormais, il faut faire en sorte que ton block spécifique, soit injecté dans le bout de template du panier affiché plus haut. Pour cela, il existe l'inclusion de block qui te permet d'inclure un block dans un autre.
    Ca donnera quelquechose comme :
    <div change:block="" module="mymodule" name="myblock" />


    A partir de là, tes champs spécifiques sont passés dans la requête au moment où l'utilisateur valide son panier, et il te suffit de suivre le tutorial sur comment ajouter un champs sur une commande.
    Attention, ici on démarre l'ajout d'information dès le panier, contrairement au tutorial, qui démarre à l'étape des adresses.
    Il te faudra donc a priori, injecter le block d'identification pour enregistrer tes paramètres via :
    $cartInfo = order_CartService::getInstance()->getDocumentInstanceFromSession();
    $cartInfo->setProperties('xxx_comments', $request->getParameter('xxx_comments'));

    Édité par Mathias 27/04/2013 12:57


    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
 
1378 membres
Aucun membre connecté