THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

J'ai besoin d'un module pour mon installation Thelia (v.2) qui puisse calculer les frais de livraison en fonction à la fois du poids du panier (calculé à partir du poids que j'indique pour chacun de mes produits dans le "BackOffice" de Thélia) et du pays de destination indiqué par le client.

Pour Thelia 2 il existe déjà un module gérant la livraison en Colissimo (en France et à l'international). Sauf qu'en-dessous d'un certain poids, j'aimerais que ce ne soit pas le Colissimo qui soit proposé, mais la Lettre Suivie.

Il faudrait donc modifier le module Colissimo existant pour qu'en-dessous du poids que j'indiquerai, l'envoi ne soit proposé qu'en Lettre Suivie et non Colissimo.

J'aurais également besoin d'un module permettant de dupliquer une fiche produit (toujours sous Thelia 2).

Si vous êtes capable de réaliser ces 2 modules, vous pouvez me proposer un devis pour les 2, dans le cas contraire, n'hésitez pas à me proposer un devis uniquement pour une des 2 parties!

Offline


Bonjour,

Pour le module Lettre Suivie, le plus simple est de copier le module Colissimo
de remplacer colissimo par lettresuivie en respectant la casse du fichier
tu changes la table des poids dans les 2 modules
suivant le poids l'un ou l'autre sera propose automatiquement

Offline


Bonjour,

Merci beaucoup!

J'ai dupliqué le module Colissimo et ai remplacé tous les "Colissimo" par "Lettresuivie" et tous les "colissimo" par "lettresuivie", dans le contenu des fichiers comme dans leurs titres.

Mais du coup dans mon BO dans l'onglet "Modules", ça m'affiche "Module LettreSuivie: Class Lettresuivie\Lettresuivie does not exist." ...

Last edited by Frugi (24-03-2015 18:03:31)

Offline


Je n'ai rien dit, c'était simplement une erreur de majuscule dans le nom du dossier du module!

ça fonctionne nickel, encore merci smile


Une idée pour le module de duplication de produits? ^^"

Offline


à un détail près en fait, dans le BO, dans "Accueil>Modules>Configurer : Lettresuivie - Livraison par Lettresuivie", il m'est impossible de cliquer sur "Prix et poids".
Lorsque je clique mon url devient: //monsite.fr/web/admin/module/Lettresuivie#prices_slices_tab

Et lorsque je passe une commande fictive, dans mon panier, il manque le bas: estimation des frais de ports et bouton "proceed checkup".

Dès que je désactive le module Lettresuivie, ça refonctionne...

Last edited by Frugi (24-03-2015 18:52:11)

Offline

Offline


ça m'affiche un page blanche avec écrit "forbidden" ...

Offline


Ah y a une histoire d'IP à ajouter, je viens de lire ça en faisant qq recherches! Je m'en occupe demain et poste l'erreur affichée!

Offline


Alors sur ://monsite/web/index_dev.php/cart (avec qqch ajouté au panier), j'ai:

ServiceNotFoundException: You have requested a non-existent service "module.lettresuivie".
1. in /home/monsite/www/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Container.php line 322
2. at Container->get('module.Lettresuivie') in /home/monsite/www/core/lib/Thelia/Model/Module.php line 259
3. at Module->getModuleInstance(object(CoreDevDebugProjectContainer)) in /home/monsite/www/core/lib/Thelia/Model/Module.php line 275
4. at Module->getDeliveryModuleInstance(object(CoreDevDebugProjectContainer)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/CartPostage.php line 175
5. at CartPostage->getCheapestDelivery(object(Country)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/CartPostage.php line 93
6. at CartPostage->postage(array(), null, object(Smarty_Internal_Template), true) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code line 556
7. at content_5512a2131ba7f5_33120390(object(Smarty_Internal_Template)) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php line 188
8. at Smarty_Internal_TemplateBase->fetch('file:cart.html') in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 365
9. at SmartyParser->internalRenderer('file', 'cart.html', array(), true) in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 389
10. at SmartyParser->render('cart.html') in /home/monsite/www/core/lib/Thelia/Core/EventListener/ViewListener.php line 72
11. at ViewListener->onKernelView(object(GetResponseForControllerResultEvent))
12. at call_user_func(array(object(ViewListener), 'onKernelView'), object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php line 164
13. at EventDispatcher->doDispatch(array(array(object(ViewListener), 'beforeKernelView'), array(object(ViewListener), 'onKernelView')), 'kernel.view', object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php line 53
14. at EventDispatcher->dispatch('kernel.view', object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php line 167
15. at ContainerAwareEventDispatcher->dispatch('kernel.view', object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 122
16. at HttpKernel->handleRaw(object(Request), '1') in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 61
17. at HttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/TheliaHttpKernel.php line 78
18. at TheliaHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/ParamInitMiddleware.php line 86
19. at ParamInitMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/SessionMiddleware.php line 80
20. at SessionMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/stack/builder/src/Stack/StackedHttpKernel.php line 23
21. at StackedHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php line 187
22. at Kernel->handle(object(Request)) in /home/monsite/www/web/index_dev.php line 39

Last edited by Frugi (25-03-2015 13:13:17)

Offline


dans le message que tu as supprime
apparement tu avais un probleme avec le module virtual.....

avant de tester le module lettresuivie via le front
il faut le faire fonctionner cote back
verifies les erreurs au niveau de l'onglet prices

Offline


Bon j'ai désactivé le module Lettresuivie, vidé tout le dossier "cache" et réactivé le module, comme indiqué dans un autre sujet, du coup une autre erreur s'affiche sur hmm/monsite/web/index_dev.php/cart:

UndefinedMethodException: Attempted to call method "getAreaForCountry" on class "Lettresuivie\Lettresuivie" in /home/monsite/www/local/modules/Lettresuivie/Lettresuivie.php line 48.
in /home/Monsite/www/local/modules/Lettresuivie/Lettresuivie.php line 48

Offline


Oui, en fait le problème avec le module virtual.. je l'ai résolu en retéléchargeant ce module sur github!

Du coup j'ai résolu ce problème, vidé les caches et fais ce que j'ai indiqué dans le message juste au-dessus!

Offline


Sur hmm/monsite.fr/web/index_dev.php/admin/module/Lettresuivie, j'ai:

ClassNotFoundException: Attempted to load class "LettresuivieQuery" from namespace "Lettresuivie\Model" in /home/monsite/www/local/modules/Lettresuivie/Form/Export.php line 58. Do you need to "use" it from another namespace?
in /home/monsite/www/local/modules/Lettresuivie/Form/Export.php line 58

Offline


tu as bien un remplacer les noms des fichiers ?
Colissimo par Lettresuivie
dossier Model

Offline


Oui je viens de voir que j'avais sauté un fichier dans le dossier Model! Désolée!

J'ai corrigé ça, du coup nouvelle erreur sur monsite.fr/web/index_dev.php/admin/module/Lettresuivie:

InvalidArgumentException: Missing 'form' parameter in form arguments
1. in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Form.php line 586
2. at Form->getInstanceFromParams(array()) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Form.php line 423
3. at Form->renderHiddenFormField(array(), object(Smarty_Internal_Template)) in /home/monsite/www/cache/dev/smarty/compile/6483da773ee64d6125d52b450fff793f00d71ffe.string.php line 101
4. at content_5512ac358e3818_15832032(object(Smarty_Internal_Template)) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php line 188
5. at Smarty_Internal_TemplateBase->fetch('string:<div class="row"> <!-- Errors --> {loop name="checkrights.lettresuivie" type="lettresuivie.check.rights"} <div class="alert alert-danger"> <p>{$ERRMES} {$ERRFILE} | {intl d='lettresuivie.ai' l="Please change the access rights"}.</p> </div> {/loop} </div> {elseloop rel="checkrights.lettresuivie"} <div class="alert alert-info"> <p>{intl d='lettresuivie.ai' l="Lettresuivie Module allows to send your products all around the world with La Poste."}</p> </div> <div class="modal fade" id="freeshipping-failed" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> <h3>{intl d='lettresuivie.ai' l="An error occured"}</h3> </div> <div class="modal-body" id="freeshipping-failed-body"> </div> </div> </div> </div> <div class="general-block-decorator"> <div class="row"> <div class="col-md-12"> <ul id="tabbed-menu" class="nav nav-tabs"> <li class="active"><a data-toggle="tab" href="#export">{intl d='lettresuivie.ai' l="Export expeditor inet file"}</a> </li> <li class="{if $tab eq "1"}active{/if}"><a data-toggle="tab" href="#prices_slices_tab">{intl d='lettresuivie.ai' l="Price slices"}</a></li> </ul> <div class="tab-content"> <div id="export" class="tab-pane active form-container"> {form name="lettresuivie.export.form"} {if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if} <form action="{url path='/admin/module/lettresuivie/export'}" method="post"> {form_hidden_fields} <div class="panel panel-default"> {form_field field="status_id"} <div class="panel-heading clearfix"> {intl d='lettresuivie.ai' l="Change orders status after export"} </div> <div class="panel-body"> <table> <tr> <td> <label for="nochange">{intl d='lettresuivie.ai' l="Do not change"}</label>&nbsp; </td> <td> <input type="radio" id="nochange" name="{$name}" value="nochange"/> </td> </tr> <tr> <td> <label for="processing">{intl d='lettresuivie.ai' l="Processing"}</label>&nbsp; </td> <td> <input type="radio" id="processing" name="{$name}" value="processing"/> </td> </tr> <tr> <td> <label for="sent">{intl d='lettresuivie.ai' l="Sent"}*</label>&nbsp; </td> <td> <input type="radio" id="sent" name="{$name}" value="sent"/> </td> </tr> </table> {/form_field} <span class="p">{intl d='lettresuivie.ai' l="*If you choose this option, the exported orders would not be available on this page anymore"}</span> </div> </div> <table class="table table-striped table-condensed"> <thead> <th class="object-title"> {intl d='lettresuivie.ai' l="REF"} </th> <th class="object-title"> {intl d='lettresuivie.ai' l="Date"} </th> <th class="object-title"> {intl d='lettresuivie.ai' l="Total taxed amount"} </th> <th class="object-title"> {intl d='lettresuivie.ai' l="Export"} </th> </thead> <tbody> {loop name="lettresuivie.notsend.loop" type="lettresuivie.notsend.loop"} {form_field field="order_"|cat:$ID} <tr> <td> <label for="{$label_attr.for}"> {$label} </label> </td> <td> {$CREATE_DATE|date_format} </td> <td> {$TOTAL_TAXED_AMOUNT} {loop name="list.solettresuivie.getcurrency" type="currency" id=$CURRENCY}{$SYMBOL}{/loop} </td> <td> <input type="checkbox" name="{$name}" id="{$label_attr.for}" value="true" class="form-control"/> </td> </tr> {/form_field} {/loop} {elseloop rel="lettresuivie.notsend.loop"} <tr> <td colspan="4"> <br /> <div class="alert alert-info">{intl d='lettresuivie.ai' l="There is currently not orders to export"}</div> </td> </tr> {/elseloop} </tbody> </table> {ifloop rel="lettresuivie.notsend.loop"} <button type="submit" name="export_solettresuivie_form" value="stay" class="form-submit-button btn btn-sm btn-default" title="{intl d='lettresuivie.ai' l='Export'}">{intl d='lettresuivie.ai' l='Export'}</button> {/ifloop} </form> {/form} </div> <div id="prices_slices_tab" class="tab-pane {if $tab eq 1}active{/if} form-container"> <!-- checkbox free shipping --> {assign var="isLettresuivieFreeShipping" value=0} {form name="lettresuivie.freeshipping.form"} <br /> <form action="{url path="/admin/module/lettresuivie/freeshipping"}" method="post" id="freeshippingform"> {form_hidden_fields} {form_field field="freeshipping"} <label> {$label} </label> <div class="switch-small freeshipping-activation-Lettresuivie" data-id="0" data-on="success" data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>"> <input type="checkbox" name="{$name}" value="true" {if $data}checked{assign var="isLettresuivieFreeShipping" value=1}{/if} /> </div> {/form_field} </form> {/form} <div id="table-prices-lettresuivie" {if $isLettresuivieFreeShipping eq 1} style="display:none;" {/if}> <!-- Prices editing --> {* -- Add price slice confirmation dialog ----------------------------------- *} {loop type="area" name="list area" backend_context=true} {include file = "includes/generic-create-dialog.html" dialog_id = "price_slice_create_dialog_{$ID}" dialog_title = {intl d='lettresuivie.ai' l="Create a price slice"} dialog_body = "<input type=\"hidden\" name=\"operation\" value=\"add\"/> <input type=\"hidden\" name=\"area\" value=\"{$ID}\" /> <label for=\"weight_{$ID}\">{intl d='lettresuivie.ai' l="Weight up to ... (kg)"}</label></label> <input type=\"number\" id=\"weight_{$ID}\" name=\"weight\" value=\"1\" class=\"form-control\" pattern=\"\\d+\\.?\\d*\" required/> <label for=\"price_{$ID}\">{intl d='lettresuivie.ai' l="Price (€)"}</label></label> <input type=\"number\" id=\"price_{$ID}\" name=\"price\" value=\"1\" class=\"form-control\" pattern=\"\\d+\\.?\\d*\" required/>" form_action="{url path="/admin/module/lettresuivie/prices"}" dialog_ok_label = {intl d='lettresuivie.ai' l="Create"} dialog_cancel_label = {intl d='lettresuivie.ai' l="Cancel"} } <div class="table-responsive"> <table class="table table-striped table-condensed table-left-aligned"> <caption class="clearfix"> {intl d='lettresuivie.ai' l="Area : "}{$NAME} {loop type="auth" name="can_create" role="ADMIN" module="lettresuivie" access="CREATE"} <a class="btn btn-default btn-primary pull-right" title="{intl d='lettresuivie.ai' l='Create a new price slice'}" href="#price_slice_create_dialog_{$ID}" data-toggle="modal"> <span class="glyphicon glyphicon-plus"></span> </a> {/loop} </caption> <thead> <tr> <th class="col-md-3">{intl d='lettresuivie.ai' l="Weight up to ... (kg)"}</th> <th class="col-md-5">{intl d='lettresuivie.ai' l="Price (€)"}</th> <th class="col-md-1">{intl d='lettresuivie.ai' l="Actions"}</th> </tr> </thead> <tbody> {loop type="lettresuivie" name="lettresuivie" area=$ID} {* -- EDIT price slice confirmation dialog ----------------------------------- *} {include file = "includes/generic-confirm-dialog.html" dialog_id = "price_slice_edit_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" dialog_title = {intl d='lettresuivie.ai' l="Edit a price slice"} dialog_message = "<input type=\"hidden\" name=\"operation\" value=\"add\"/> <input type=\"hidden\" name=\"area\" value=\"{$ID}\"/> <input type=\"hidden\" name=\"weight\" value=\"{$MAX_WEIGHT}\"/> <label for=\"price_edit_{$ID}_{$MAX_WEIGHT}\">{intl d='lettresuivie.ai' l='Price (€)'}</label> <input type=\"number\" id=\"price_edit_{$ID}_{$MAX_WEIGHT}\" class=\"form-control\" name=\"price\" value=\"{$PRICE}\" pattern=\"\\d+\\.?\\d*\" required/>" form_action="{url path="/admin/module/lettresuivie/prices"}" dialog_ok_label = {intl d='lettresuivie.ai' l="Edit"} dialog_cancel_label = {intl d='lettresuivie.ai' l="Cancel"} } {* -- Delete price slice confirmation dialog ----------------------------------- *} {include file = "includes/generic-confirm-dialog.html" dialog_id = "price_slice_delete_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" dialog_title = {intl d='lettresuivie.ai' l="Delete a price slice"} dialog_message = "<input type=\"hidden\" name=\"operation\" value=\"delete\"/> <input type=\"hidden\" name=\"area\" value=\"{$ID}\"/> <input type=\"hidden\" name=\"weight\" value=\"{$MAX_WEIGHT}\"/> {intl d='lettresuivie.ai' l="Do you really want to delete this slice ?"}" form_action="{url path="/admin/module/lettresuivie/prices"}" dialog_ok_label = {intl d='lettresuivie.ai' l="Delete"} dialog_cancel_label = {intl d='lettresuivie.ai' l="Cancel"} } <tr> <td>{$MAX_WEIGHT}</td> <td>{$PRICE}</td> <td> <div class="btn-group"> {loop type="auth" name="can_change" role="ADMIN" module="lettresuivie" access="UPDATE"} <a class="btn btn-default btn-xs" title="{intl d='lettresuivie.ai' l='Edit this price slice'}" href="#price_slice_edit_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" data-toggle="modal"> <span class="glyphicon glyphicon-edit"></span> </a> <a class="btn btn-default btn-xs" title="{intl d='lettresuivie.ai' l='Delete this price slice'}" href="#price_slice_delete_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" data-toggle="modal"> <span class="glyphicon glyphicon-trash"></span> </a> {/loop} </div> </td> </tr> {/loop} </tbody> </table> </div> {/loop} </div> </div> </div> </div> </div> </div> {/elseloop}') in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Module.php line 91
6. at Module->theliaModule(array('location' => 'module_configuration', 'module' => 'Lettresuivie', 'countvar' => null),object(Smarty_Internal_Template)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Hook.php line 141
7. at Hook->moduleIncludeCompat(array('name' => 'module.configuration', 'location' => 'module_configuration', 'modulecode' => 'Lettresuivie'),object(Smarty_Internal_Template)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Hook.php line 118
8. at Hook->processHookFunction(array('name' => 'module.configuration', 'location' => 'module_configuration', 'modulecode' => 'Lettresuivie'),object(Smarty_Internal_Template)) in /home/monsite/www/cache/dev/smarty/compile/15a1db8e4340979ed206157ca54a32b37b0df400.file.module-configure.html.php line 706
9. at content_5512ac354582d3_63797505(object(Smarty_Internal_Template)) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php line 188
10. at Smarty_Internal_TemplateBase->fetch('file:module-configure.html') in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 365
11. at SmartyParser->internalRenderer('file', 'module-configure.html', array('module_code' => 'Lettresuivie', 'locale' => 'fr_FR', 'lang_code' => 'fr', 'lang_id' => '1', 'edit_language_id' => '1', 'edit_language_locale' => 'fr_FR', 'edit_currency_id' => '1', 'current_url' => 'http://monsite.fr/web/index_dev.php/adm … ttresuivie'), true) in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 389
12. at SmartyParser->render('module-configure.html', array('module_code' => 'Lettresuivie', 'locale' => 'fr_FR', 'lang_code' => 'fr', 'lang_id' => '1', 'edit_language_id' => '1', 'edit_language_locale' => 'fr_FR', 'edit_currency_id' => '1', 'current_url' => 'http://monsite.fr/web/index_dev.php/adm … ttresuivie')) in /home/monsite/www/core/lib/Thelia/Controller/Admin/BaseAdminController.php line 373
13. at BaseAdminController->renderRaw('module-configure', array('module_code' => 'Lettresuivie')) in /home/monsite/www/core/lib/Thelia/Controller/Admin/BaseAdminController.php line 320
14. at BaseAdminController->render('module-configure', array('module_code' => 'Lettresuivie')) in /home/monsite/www/core/lib/Thelia/Controller/Admin/ModuleController.php line 225
15. at ModuleController->configureAction('Lettresuivie')
16. at call_user_func_array(array(object(ModuleController), 'configureAction'), array('Lettresuivie')) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 117
17. at HttpKernel->handleRaw(object(Request), '1') in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 61
18. at HttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/TheliaHttpKernel.php line 78
19. at TheliaHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/ParamInitMiddleware.php line 86
20. at ParamInitMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/SessionMiddleware.php line 80
21. at SessionMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/stack/builder/src/Stack/StackedHttpKernel.php line 23
22. at StackedHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php line 187
23. at Kernel->handle(object(Request)) in /home/monsite/www/web/index_dev.php line 37

Last edited by Frugi (25-03-2015 13:42:55)

Offline


verifies le fichier du dossier  Form/Export.php

Offline


J'ai comparé au fichier export.php du module Colissimo, et tout est bien remplacé (Colissimo par Lettresuivie et colissimo par lettresuivie)... et à part ça rien ne change

Offline


et dans le fichier Form/FreeShipping.php ?

Offline

Offline


En fait j'ai 3 erreurs différentes qui viennent aléatoirement à chaque fois que je désactive le module, vide le cache et le réactive...
Celle citée + haut, celle-ci:

ServiceNotFoundException: You have requested a non-existent service "module.lettresuivie".
1. in /home/monsite/www/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Container.php line 322
2. at Container->get('module.Lettresuivie') in /home/monsite/www/core/lib/Thelia/Model/Module.php line 259
3. at Module->getModuleInstance(object(CoreDevDebugProjectContainer)) in /home/monsite/www/core/lib/Thelia/Model/Module.php line 275
4. at Module->getDeliveryModuleInstance(object(CoreDevDebugProjectContainer)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/CartPostage.php line 175
5. at CartPostage->getCheapestDelivery(object(Country)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/CartPostage.php line 93
6. at CartPostage->postage(array(), null, object(Smarty_Internal_Template), true) in /home/monsite/www/cache/dev/smarty/compile/d0c4f10f7179276fdfee2b7292b5267252174d88.file.cart.html.php line 556
7. at content_5512baf4b03a96_67491234(object(Smarty_Internal_Template)) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php line 188
8. at Smarty_Internal_TemplateBase->fetch('file:cart.html') in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 365
9. at SmartyParser->internalRenderer('file', 'cart.html', array(), true) in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 389
10. at SmartyParser->render('cart.html') in /home/monsite/www/core/lib/Thelia/Core/EventListener/ViewListener.php line 72
11. at ViewListener->onKernelView(object(GetResponseForControllerResultEvent))
12. at call_user_func(array(object(ViewListener), 'onKernelView'), object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php line 164
13. at EventDispatcher->doDispatch(array(array(object(ViewListener), 'beforeKernelView'), array(object(ViewListener), 'onKernelView')), 'kernel.view', object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php line 53
14. at EventDispatcher->dispatch('kernel.view', object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php line 167
15. at ContainerAwareEventDispatcher->dispatch('kernel.view', object(GetResponseForControllerResultEvent)) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 122
16. at HttpKernel->handleRaw(object(Request), '1') in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 61
17. at HttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/TheliaHttpKernel.php line 78
18. at TheliaHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/ParamInitMiddleware.php line 86
19. at ParamInitMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/SessionMiddleware.php line 80
20. at SessionMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/stack/builder/src/Stack/StackedHttpKernel.php line 23
21. at StackedHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php line 187
22. at Kernel->handle(object(Request)) in /home/monsite/www/web/index_dev.php line 37

Et celle-là:

ElementNotFoundException: Loop type 'lettresuivie.check.rights' is not defined.
1. in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/TheliaLoop.php line 379
2. at TheliaLoop->createLoopInstance(array('name' => 'checkrights.lettresuivie', 'type' => 'lettresuivie.check.rights')) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/TheliaLoop.php line 140
3. at TheliaLoop->theliaLoop(array('name' => 'checkrights.lettresuivie', 'type' => 'lettresuivie.check.rights'), null,object(Smarty_Internal_Template), true) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code line 47
4. at content_5512bb0dc9c792_98694903(object(Smarty_Internal_Template)) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php line 188
5. at Smarty_Internal_TemplateBase->fetch('string:<div class="row"> <!-- Errors --> {loop name="checkrights.lettresuivie" type="lettresuivie.check.rights"} <div class="alert alert-danger"> <p>{$ERRMES} {$ERRFILE} | {intl d='lettresuivie.ai' l="Please change the access rights"}.</p> </div> {/loop} </div> {elseloop rel="checkrights.lettresuivie"} <div class="alert alert-info"> <p>{intl d='lettresuivie.ai' l="Lettresuivie Module allows to send your products all around the world with La Poste."}</p> </div> <div class="modal fade" id="freeshipping-failed" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> <h3>{intl d='lettresuivie.ai' l="An error occured"}</h3> </div> <div class="modal-body" id="freeshipping-failed-body"> </div> </div> </div> </div> <div class="general-block-decorator"> <div class="row"> <div class="col-md-12"> <ul id="tabbed-menu" class="nav nav-tabs"> <li class="active"><a data-toggle="tab" href="#export">{intl d='lettresuivie.ai' l="Export expeditor inet file"}</a> </li> <li class="{if $tab eq "1"}active{/if}"><a data-toggle="tab" href="#prices_slices_tab">{intl d='lettresuivie.ai' l="Price slices"}</a></li> </ul> <div class="tab-content"> <div id="export" class="tab-pane active form-container"> {form name="lettresuivie.export.form"} {if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if} <form action="{url path='/admin/module/lettresuivie/export'}" method="post"> {form_hidden_fields} <div class="panel panel-default"> {form_field field="status_id"} <div class="panel-heading clearfix"> {intl d='lettresuivie.ai' l="Change orders status after export"} </div> <div class="panel-body"> <table> <tr> <td> <label for="nochange">{intl d='lettresuivie.ai' l="Do not change"}</label>&nbsp; </td> <td> <input type="radio" id="nochange" name="{$name}" value="nochange"/> </td> </tr> <tr> <td> <label for="processing">{intl d='lettresuivie.ai' l="Processing"}</label>&nbsp; </td> <td> <input type="radio" id="processing" name="{$name}" value="processing"/> </td> </tr> <tr> <td> <label for="sent">{intl d='lettresuivie.ai' l="Sent"}*</label>&nbsp; </td> <td> <input type="radio" id="sent" name="{$name}" value="sent"/> </td> </tr> </table> {/form_field} <span class="p">{intl d='lettresuivie.ai' l="*If you choose this option, the exported orders would not be available on this page anymore"}</span> </div> </div> <table class="table table-striped table-condensed"> <thead> <th class="object-title"> {intl d='lettresuivie.ai' l="REF"} </th> <th class="object-title"> {intl d='lettresuivie.ai' l="Date"} </th> <th class="object-title"> {intl d='lettresuivie.ai' l="Total taxed amount"} </th> <th class="object-title"> {intl d='lettresuivie.ai' l="Export"} </th> </thead> <tbody> {loop name="lettresuivie.notsend.loop" type="lettresuivie.notsend.loop"} {form_field field="order_"|cat:$ID} <tr> <td> <label for="{$label_attr.for}"> {$label} </label> </td> <td> {$CREATE_DATE|date_format} </td> <td> {$TOTAL_TAXED_AMOUNT} {loop name="list.solettresuivie.getcurrency" type="currency" id=$CURRENCY}{$SYMBOL}{/loop} </td> <td> <input type="checkbox" name="{$name}" id="{$label_attr.for}" value="true" class="form-control"/> </td> </tr> {/form_field} {/loop} {elseloop rel="lettresuivie.notsend.loop"} <tr> <td colspan="4"> <br /> <div class="alert alert-info">{intl d='lettresuivie.ai' l="There is currently not orders to export"}</div> </td> </tr> {/elseloop} </tbody> </table> {ifloop rel="lettresuivie.notsend.loop"} <button type="submit" name="export_solettresuivie_form" value="stay" class="form-submit-button btn btn-sm btn-default" title="{intl d='lettresuivie.ai' l='Export'}">{intl d='lettresuivie.ai' l='Export'}</button> {/ifloop} </form> {/form} </div> <div id="prices_slices_tab" class="tab-pane {if $tab eq 1}active{/if} form-container"> <!-- checkbox free shipping --> {assign var="isLettresuivieFreeShipping" value=0} {form name="lettresuivie.freeshipping.form"} <br /> <form action="{url path="/admin/module/lettresuivie/freeshipping"}" method="post" id="freeshippingform"> {form_hidden_fields} {form_field field="freeshipping"} <label> {$label} </label> <div class="switch-small freeshipping-activation-Lettresuivie" data-id="0" data-on="success" data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>"> <input type="checkbox" name="{$name}" value="true" {if $data}checked{assign var="isLettresuivieFreeShipping" value=1}{/if} /> </div> {/form_field} </form> {/form} <div id="table-prices-lettresuivie" {if $isLettresuivieFreeShipping eq 1} style="display:none;" {/if}> <!-- Prices editing --> {* -- Add price slice confirmation dialog ----------------------------------- *} {loop type="area" name="list area" backend_context=true} {include file = "includes/generic-create-dialog.html" dialog_id = "price_slice_create_dialog_{$ID}" dialog_title = {intl d='lettresuivie.ai' l="Create a price slice"} dialog_body = "<input type=\"hidden\" name=\"operation\" value=\"add\"/> <input type=\"hidden\" name=\"area\" value=\"{$ID}\" /> <label for=\"weight_{$ID}\">{intl d='lettresuivie.ai' l="Weight up to ... (kg)"}</label></label> <input type=\"number\" id=\"weight_{$ID}\" name=\"weight\" value=\"1\" class=\"form-control\" pattern=\"\\d+\\.?\\d*\" required/> <label for=\"price_{$ID}\">{intl d='lettresuivie.ai' l="Price (€)"}</label></label> <input type=\"number\" id=\"price_{$ID}\" name=\"price\" value=\"1\" class=\"form-control\" pattern=\"\\d+\\.?\\d*\" required/>" form_action="{url path="/admin/module/lettresuivie/prices"}" dialog_ok_label = {intl d='lettresuivie.ai' l="Create"} dialog_cancel_label = {intl d='lettresuivie.ai' l="Cancel"} } <div class="table-responsive"> <table class="table table-striped table-condensed table-left-aligned"> <caption class="clearfix"> {intl d='lettresuivie.ai' l="Area : "}{$NAME} {loop type="auth" name="can_create" role="ADMIN" module="lettresuivie" access="CREATE"} <a class="btn btn-default btn-primary pull-right" title="{intl d='lettresuivie.ai' l='Create a new price slice'}" href="#price_slice_create_dialog_{$ID}" data-toggle="modal"> <span class="glyphicon glyphicon-plus"></span> </a> {/loop} </caption> <thead> <tr> <th class="col-md-3">{intl d='lettresuivie.ai' l="Weight up to ... (kg)"}</th> <th class="col-md-5">{intl d='lettresuivie.ai' l="Price (€)"}</th> <th class="col-md-1">{intl d='lettresuivie.ai' l="Actions"}</th> </tr> </thead> <tbody> {loop type="lettresuivie" name="lettresuivie" area=$ID} {* -- EDIT price slice confirmation dialog ----------------------------------- *} {include file = "includes/generic-confirm-dialog.html" dialog_id = "price_slice_edit_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" dialog_title = {intl d='lettresuivie.ai' l="Edit a price slice"} dialog_message = "<input type=\"hidden\" name=\"operation\" value=\"add\"/> <input type=\"hidden\" name=\"area\" value=\"{$ID}\"/> <input type=\"hidden\" name=\"weight\" value=\"{$MAX_WEIGHT}\"/> <label for=\"price_edit_{$ID}_{$MAX_WEIGHT}\">{intl d='lettresuivie.ai' l='Price (€)'}</label> <input type=\"number\" id=\"price_edit_{$ID}_{$MAX_WEIGHT}\" class=\"form-control\" name=\"price\" value=\"{$PRICE}\" pattern=\"\\d+\\.?\\d*\" required/>" form_action="{url path="/admin/module/lettresuivie/prices"}" dialog_ok_label = {intl d='lettresuivie.ai' l="Edit"} dialog_cancel_label = {intl d='lettresuivie.ai' l="Cancel"} } {* -- Delete price slice confirmation dialog ----------------------------------- *} {include file = "includes/generic-confirm-dialog.html" dialog_id = "price_slice_delete_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" dialog_title = {intl d='lettresuivie.ai' l="Delete a price slice"} dialog_message = "<input type=\"hidden\" name=\"operation\" value=\"delete\"/> <input type=\"hidden\" name=\"area\" value=\"{$ID}\"/> <input type=\"hidden\" name=\"weight\" value=\"{$MAX_WEIGHT}\"/> {intl d='lettresuivie.ai' l="Do you really want to delete this slice ?"}" form_action="{url path="/admin/module/lettresuivie/prices"}" dialog_ok_label = {intl d='lettresuivie.ai' l="Delete"} dialog_cancel_label = {intl d='lettresuivie.ai' l="Cancel"} } <tr> <td>{$MAX_WEIGHT}</td> <td>{$PRICE}</td> <td> <div class="btn-group"> {loop type="auth" name="can_change" role="ADMIN" module="lettresuivie" access="UPDATE"} <a class="btn btn-default btn-xs" title="{intl d='lettresuivie.ai' l='Edit this price slice'}" href="#price_slice_edit_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" data-toggle="modal"> <span class="glyphicon glyphicon-edit"></span> </a> <a class="btn btn-default btn-xs" title="{intl d='lettresuivie.ai' l='Delete this price slice'}" href="#price_slice_delete_dialog_{$ID}_{$MAX_WEIGHT|replace:'.':'-'}" data-toggle="modal"> <span class="glyphicon glyphicon-trash"></span> </a> {/loop} </div> </td> </tr> {/loop} </tbody> </table> </div> {/loop} </div> </div> </div> </div> </div> </div> {/elseloop}') in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Module.php line 91
6. at Module->theliaModule(array('location' => 'module_configuration', 'module' => 'Lettresuivie', 'countvar' => null),object(Smarty_Internal_Template)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Hook.php line 141
7. at Hook->moduleIncludeCompat(array('name' => 'module.configuration', 'location' => 'module_configuration', 'modulecode' => 'Lettresuivie'),object(Smarty_Internal_Template)) in /home/monsite/www/local/modules/TheliaSmarty/Template/Plugins/Hook.php line 118
8. at Hook->processHookFunction(array('name' => 'module.configuration', 'location' => 'module_configuration', 'modulecode' => 'Lettresuivie'),object(Smarty_Internal_Template)) in /home/monsite/www/cache/dev/smarty/compile/15a1db8e4340979ed206157ca54a32b37b0df400.file.module-configure.html.php line 706
9. at content_5512baef93de56_17217341(object(Smarty_Internal_Template)) in /home/monsite/www/core/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php line 188
10. at Smarty_Internal_TemplateBase->fetch('file:module-configure.html') in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 365
11. at SmartyParser->internalRenderer('file', 'module-configure.html', array('module_code' => 'Lettresuivie', 'locale' => 'fr_FR', 'lang_code' => 'fr', 'lang_id' => '1', 'edit_language_id' => '1', 'edit_language_locale' => 'fr_FR', 'edit_currency_id' => '1', 'current_url' => 'http://monsite.fr/web/index_dev.php/adm … ttresuivie'), true) in /home/monsite/www/local/modules/TheliaSmarty/Template/SmartyParser.php line 389
12. at SmartyParser->render('module-configure.html', array('module_code' => 'Lettresuivie', 'locale' => 'fr_FR', 'lang_code' => 'fr', 'lang_id' => '1', 'edit_language_id' => '1', 'edit_language_locale' => 'fr_FR', 'edit_currency_id' => '1', 'current_url' => 'http://monsite.fr/web/index_dev.php/adm … ttresuivie')) in /home/monsite/www/core/lib/Thelia/Controller/Admin/BaseAdminController.php line 373
13. at BaseAdminController->renderRaw('module-configure', array('module_code' => 'Lettresuivie')) in /home/monsite/www/core/lib/Thelia/Controller/Admin/BaseAdminController.php line 320
14. at BaseAdminController->render('module-configure', array('module_code' => 'Lettresuivie')) in /home/monsite/www/core/lib/Thelia/Controller/Admin/ModuleController.php line 225
15. at ModuleController->configureAction('Lettresuivie')
16. at call_user_func_array(array(object(ModuleController), 'configureAction'), array('Lettresuivie')) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 117
17. at HttpKernel->handleRaw(object(Request), '1') in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php line 61
18. at HttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/TheliaHttpKernel.php line 78
19. at TheliaHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/ParamInitMiddleware.php line 86
20. at ParamInitMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/lib/Thelia/Core/Stack/SessionMiddleware.php line 80
21. at SessionMiddleware->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/stack/builder/src/Stack/StackedHttpKernel.php line 23
22. at StackedHttpKernel->handle(object(Request), '1', true) in /home/monsite/www/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php line 187
23. at Kernel->handle(object(Request)) in /home/monsite/www/web/index_dev.php line 37

Offline


J'ai refait la manip de dupliquer le module Colissimo et de remplacer colissimo par lettre suivie dans le contenu et les noms des fichiers, mais toujours les mêmes 3 erreurs...

Offline


pour Loop type 'lettresuivie.check.rights' is not defined.
verifies Config/config.xml

Offline


Si tu ne comprends pas du tout ce que tu fais, ça ne va pas être facile...


OpenStudio Toulouse

Offline


@ZZUUTT, le fichier config.xml est bon aussi!

@ROADSTER31, je fais beaucoup de recherches et d'"essais" par moi-même, mais sans un peu d'aide j'ai du mal hmm

Offline


Alors à force de manips j'ai réussi à l'installer.
J'ai dû compresser le dossier du module Lettresuivie en zip, l'envoyer depuis le BO en index_dev.php, puis envoyer le dossier via ftp... (avant je ne faisait qu'uploader le dossier via ftp, je ne sais pas si c'est ça?)
Je ne comprend pas oO