Jump to content

Smarty : variable existante provoque un écran blanc


Recommended Posts

Bonjour à tous,

J'ai créé un fichier tpl qui correspond à des pages magasins personnalisées, et lorsque je tente d'afficher des infos dessus de cette façon en modifiant le controller, pas moyen, j'ai un écran blanc.

$this->context->smarty->assign('store', $store);

        parent::initContent();

        if($store)
            $this->setTemplate('cms/store.tpl');

Lorsque je fais {debug}sur la page tpl, je vois que les infos sont bien là mais elles refusent de s'afficher lorsque je fais par exemple {$store.wysiwyg1} (qui est un de mes champs personnalisés).

 

Précision : le contenu du debug :

Array (2)
value => Store Object (25)
   ->id = 1
   ->id_country = "8"
   ->id_state = "0"
   ->name = Array (1)
    1 => "nom du magasin"
   ->address1 = Array (1)
    1 => "adresse"
   ->address2 = Array (1)
    1 => ""
   ->postcode = "75015"
   ->city = "Paris"
   ->latitude = "coordonnées"
   ->longitude = "coordonnées"
   ->hours = Array (1)
    1 => "a:7:{i:0;s:6:"Fermé";i:1;s:29:"10h00 ..."
   ->phone = "01 02 03 04 05"
   ->fax = "09 01 02 03 04"
   ->note = Array (1)
    1 => "..."
   ->email = ""
   ->date_add = "2016-09-05 10:49:06"
   ->date_upd = "2019-08-20 11:27:44"
   ->active = "1"
   ->wysiwyg1 = Array (1)
    1 => "<h2><a href="lien..."
   ->wysiwyg2 = Array (1)
    1 => "<h2>Le magasin en photos </h2> <p><i..."
   ->payments = Array (1)
    1 => "Espèces, Visa, MasterCard, American E..."
   ->url_rewrite = Array (1)
    1 => "url-récente"
   ->id_shop_list = Array (0)
   ->force_id = false
   ->id_image = 1
scope => "Smarty object"

 

Est-ce une nouveauté de prestashop 1.7?

Link to comment
Share on other sites

Sur mon template, il n'y a rien pour l'instant, voici le reste de mon code cela dit.
J'ai créé un champs personnalisé sur les pages magasins appelé url_rewrite que j'ai ajouté dans ps_store_lang (avec les autres chmaps personnalisés).

j'ai donc créé cette fonction :

    public static function getStoreByUrl($url_rewrite)
    {
        $id_store = Db::getInstance()->getValue('
        SELECT id_store
        FROM '._DB_PREFIX_.'store_lang
        WHERE url_rewrite = "'.$url_rewrite.'"');
        return $id_store;
    }

qui permet de comprendre avec une url quel est le store dont on parle, puis dans les controllers, vu que je ne réussissais pas à overrider, j'ai fait ça :

    public function initContent()
    {
        $distance_unit = Configuration::get('PS_DISTANCE_UNIT');
        if (!in_array($distance_unit, array('km', 'mi'))) {
            $distance_unit = 'km';
        }

        $this->context->smarty->assign(array(
            'mediumSize' => Image::getSize(ImageType::getFormattedName('medium')),
            'searchUrl' => $this->context->link->getPageLink('stores'),
            'distance_unit' => $distance_unit,
            'stores' => $this->getTemplateVarStores(),
        ));

        parent::initContent();
        $this->setTemplate('cms/stores');


        $store = false;

        if(Tools::getValue('url_rewrite'))
        {
            $id_store = Store::getStoreByUrl(Tools::getValue('url_rewrite'));

            if($id_store) {
                $store = new Store($id_store);

                $address = new Address();
                $address->country = Country::getNameById($this->context->language->id, $store->id_country);
                $address->address1 = $store->address1;
                $address->address2 = $store->address2;
                $address->postcode = $store->postcode;
                $address->city = $store->city;

                $addresses_formated = AddressFormat::getFormattedLayoutData($address);

                $has_picture = file_exists(_PS_STORE_IMG_DIR_ . (int)$store->id . '.jpg');
                $working_hours = Tools::unSerialize($store->hours);

                $this->context->smarty->assign(array(
                    'has_picture' => $has_picture,
                    'addresses_formated' => $addresses_formated,
                    'working_hours' => $working_hours,
                ));
            }
        }

        $this->context->smarty->assign('store', $store);

        parent::initContent();

        if($store)
            $this->setTemplate('cms/store.tpl');
    }



Comme je le disais plus haut, ce qui est étonnant, c'est que lorsque je débug la page, je vois bien toutes les variables de $store qui ont été envoyées.

 

Merci pour les réponses en tous cas.

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