Jump to content
biogelix

No template found for ... Alors que le fichier est présent

Recommended Posts

Bonjour à tous, je rencontre une difficulté sur prestashop, j'ai créer mon plugin et j'obtiens une erreur qui me dit comme quoi le Template n'est pas trouvé, or, il est belle et bien présent.

 

No template found for /modules/monmodule/views/templates/fronthistory.tpl
at line 68 in file classes/Smarty/TemplateFinder.php

 

Merci par avance de votre aide

Share this post


Link to post
Share on other sites

Et il y a quoi dans votre ligne d'appel à votre tpl après les assign() ?

Share this post


Link to post
Share on other sites
$this->setTemplate(_PS_MODULE_DIR_ . 'monmodule/views/templates/fronthistory.tpl');

 

Share this post


Link to post
Share on other sites

$this->setTemplate('fronthistory.tpl');

ou selon le cas (dans un controller)

$this->setTemplate(_PS_THEME_DIR_.'fronthistory.tpl');

 

 

Share this post


Link to post
Share on other sites

Surtout ne prend pas la peine ni de dire que tu code en 1.7, ni même si tu es dans un controller module ou un hook module

On doit deviner ? Moi je devine que tu nous prend pour tes boys

 

Share this post


Link to post
Share on other sites

Le code est pourtant clair^^

    /**
     * Assigns module template for page content
     *
     * @param string $template Template filename
     * @throws PrestaShopException
     */
    public function setTemplate($template)
    {
        if (!$path = $this->getTemplatePath($template)) {
            throw new PrestaShopException("Template '$template' not found");
        }

        $this->template = $path;
    }

    /**
     * Finds and returns module front template that take the highest precedence
     *
     * @param string $template Template filename
     * @return string|false
     */
    public function getTemplatePath($template)
    {
        if (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$this->module->name.'/'.$template)) {
            return _PS_THEME_DIR_.'modules/'.$this->module->name.'/'.$template;
        } elseif (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/front/'.$template)) {
            return _PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/front/'.$template;
        } elseif (Tools::file_exists_cache(_PS_MODULE_DIR_.$this->module->name.'/views/templates/front/'.$template)) {
            return _PS_MODULE_DIR_.$this->module->name.'/views/templates/front/'.$template;
        }

        return false;
    }

Si vous utilisez /views/template/ alors il faut ajouter front/  dans le chemin (et créer le répertoire)^^

Share this post


Link to post
Share on other sites
4 minutes ago, Eolia said:

Le code est pourtant clair^^


    /**
     * Assigns module template for page content
     *
     * @param string $template Template filename
     * @throws PrestaShopException
     */
    public function setTemplate($template)
    {
        if (!$path = $this->getTemplatePath($template)) {
            throw new PrestaShopException("Template '$template' not found");
        }

        $this->template = $path;
    }

    /**
     * Finds and returns module front template that take the highest precedence
     *
     * @param string $template Template filename
     * @return string|false
     */
    public function getTemplatePath($template)
    {
        if (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$this->module->name.'/'.$template)) {
            return _PS_THEME_DIR_.'modules/'.$this->module->name.'/'.$template;
        } elseif (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/front/'.$template)) {
            return _PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/front/'.$template;
        } elseif (Tools::file_exists_cache(_PS_MODULE_DIR_.$this->module->name.'/views/templates/front/'.$template)) {
            return _PS_MODULE_DIR_.$this->module->name.'/views/templates/front/'.$template;
        }

        return false;
    }

Si vous utilisez /views/template/ alors il faut ajouter front/  dans le chemin (et créer le répertoire)^^

Merci beaucoup pour ta réponse, j'ai également essayé :

$this->setTemplate(_PS_MODULE_DIR_ . 'monmodule/views/templates/front/history.tpl');

Et j'ai bien crée le dossier front/ (j’accède bien au fichier avec cette URL dans filezilla )

Share this post


Link to post
Share on other sites

si tu utilises front, la syntaxe est $this->setTemplate('fronthistory.tpl');

Prestashop cherchera tous les chemins dispo comme l'indique la fonction.

Maintenant ce code est pour les 1.6 donc ils ont peut-être modifié la fonction, je n'ai pas le temps de vérifier.

Share this post


Link to post
Share on other sites

@Eolia Merci pour ton aide, j'ai également essayé mais rien à faire, de plus si je met $this->setTemplate('fronthistory.tpl'); presta va aller chercher le Template de base or, moi je l'ai refait dans mon module.Encore merci

Share this post


Link to post
Share on other sites

ton controleur extend quoi ? module ? moduleFront ? FrontController ?

Parce que là j'ai l'impression qu'on est pas dans un contexte module à te lire...

Share this post


Link to post
Share on other sites

@Eolia Je suis dans  /override/controllers/front/HistoryController.php et ma classe extends de HistoryControllerCore

Share this post


Link to post
Share on other sites

Ah ben ca change tout, on est pas du tout dans un contexte module en fait et c'est normal que cela appelle le template par défaut vous devez passer par un hook comme c'est expliqué dans ForntController.php

image.png.6dbd534f4c00ce29aa81b1eb7b6b36de.png

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More