Jump to content

Migration d'un template Smarty vers Twig. A l'aide


Recommended Posts

Bonjour, j'ai fait réaliser il y a quelques temps un module par un freelance que je n'arrive plus à contacter. Ce module ne fonctionne plus sous Twig (il était prévu pour Smarty).
Je suis développeur PHP/MySQL mais avec une minuscule expérience sur Prestashop et pas du tout sur Twig. J'ai repris des données d'un ancien site, je dois maintenant créer des modules pour Prestashop (1.7.8.8)

Dans le backend: Le module doit afficher un SELECT pour chaque produit d'une commande. Le SELECT prend les données d'une nouvelle table (order_product_state) et une table de liaison fait le lien entre order_product_state et order_detail.
J'ai créé un override du template sur monmodule/views/Prestashop/Admin/Sell/Order/Order/Blocks/View/product.html.twig (une copie de l'original) et j'ai pu placer le code pour créer le SELECT mais je n'arrive pas à remplir avec les données de la BDD (order_produt_state)

Sur le module original j'avais ceci:

class MonModule extends Module
{
....

    public function install()
    {
            
        // return parent::install() && $this->_installSql() && $this->_installTab();
        return parent::install()
        && $this->_installSql()
        && $this->_installTab()
        && $this->_installOverrideTemplates()
        && $this->registerHook('displayOrderDetail')
        && $this->registerHook('displayBackOfficeHeader');
    }

    public function hookDisplayOrderDetail($params)
    {
        $order = $params['order'];
        $this->context->smarty->assign(array(
            'order' => (new OrderPresenter())->present($order),
            'allstates' => orderproductClass::getOrderStates($this->context->language->id)
        ));
        return $this->display(__FILE__, 'order-details.tpl');
    }

}


et dans le template:

            {assign var='product_state' value=OrderProductState::getProductState($product.id_order_detail)}
            {foreach from=$allstates item=state key=index}
                {if ($index == 0 && !$product_state) || $product_state == $state.id_order_product_state}
                    <span class="label label-pill dark" style="background-color:{$state.color}">
                        {$state.name|escape}
                    </span>
                {/if}
            {/foreach}



Comment faire pour que ça fonctionne sur Twig ? J'ai essayé ceci:
{% set product_state = MonModule.getProductState(product.orderDetailId) %}
mais j'ai le message d'erreur Variable "MonModule" does not exist.

Après plusieurs tentatives, des recherches sur le net et autres, je n'arrive pas à trouver comment appeler la fonction du controlleur de mon module depuis le fichier Twig. Je demande donc votre aide ! Surtout comment créer des valeurs dans le contrôlleur et les reprendre sur mon template (allstates doit contenir toutes les valeurs possibles du SELECT). Merci pour votre aide.

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