Jump to content

Besoin d'explications sur le résultat d'un array


Recommended Posts

Bonjour,

 

J'ai rajouté plusieurs champs dans ma table product_lang ce qui me permet d'afficher des images ou non dans ma page produit, cette partie là en front office fonctionne parfaitement. Si j'ai un 1 dans le champ j'ai une image, si j'ai un 0 je n'ai pas d'image.

 

J'aimerais maintenant avoir des cases à cocher dans la page produit de mon back office me permettant de remplir plus facilement la base de données sans passer par phpmyadmin. J'ai pu rajouter et mettre en forme mes checkbox sans soucis. Par contre celle ci ne se coche pas.

 

Je vous met mon bout de code ci dessous :

<label for="label_ab">
<input type="checkbox" name="label_ab" id="label_ab" {if $product->label_ab == 1}checked="checked"{/if} />
Mon label n°1
</label>

Si je fait un {$product->label_ab|print_r} dans ma page j'ai alors comme résultat Array ( [1] => 1 ) 1

 

Si quelqu'un pouvait me guider un peu je suis perdu là.

Merci.

 

Edited by Pounyet (see edit history)
Link to comment
Share on other sites

Bonjour,

 

J'ai un override dans classes du fichier Product.php

 

avec dedans :

<?php
class Product extends ProductCore
{
    public $label_ab;
    
    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
      Product::$definition['fields']['label_ab'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString');
      parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
 
}

?>

J'ai également entendu parlé d'un override de AdminProductsController mais je n'ai pas compris quoi faire dans ce fichier si besoin.

Link to comment
Share on other sites

Bonjour,

 

Dans ton override tu as mis que ta propriété est une variable de langue. ( lang = true )
Du coup tu peux avoir une valeur par langue ,

C'est ce qui peut expliquer que tu reçoive un tableau avec les différentes valeurs en back office.

Link to comment
Share on other sites

Alors je viens de tester en enlevant cette variable et pas de changement, par contre j'ai fait un test avec un textarea venant d'un tuto sur un site, et ça fonctionne Oo

 

Dans mon fichier override/controllers/admin/templates/products/ j'ai mon fichier informations.tpl et dans ce fichier j'ai mis ça :

<tr>
    <td class="col-left">
        {include file="controllers/products/multishop/checkbox.tpl" field="label_ab" type="tinymce" multilang="true"}
        <label>{$bullet_common_field} {l s='Label AB :'}<br /></label>
    </td>
    <td style="padding-bottom:5px;">
        {include file="controllers/products/textarea_lang.tpl" languages=$languages
            input_name='label_ab'
            input_value=$product->label_ab
        }
        <p class="clear"></p>
    </td>
</tr>

Et du coup, dans ma zone de textearea j'ai la bonne valeur, et si je la modifie ma base de données se met à jour.

 

Sauf que moi il me faut des case à cocher...

Link to comment
Share on other sites

Bon par contre la modification me met une erreur :

 

Property Product->producteur is not valid 

 

ainsi q'une erreur de cache smarty :

 

Notice à la ligne 451 du fichier /home/bioenbou/www/test/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code
[8] Uninitialized string offset: 1

Notice à la ligne 458 du fichier /home/bioenbou/www/test/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code
[8] Uninitialized string offset: 1

 

(producteur est un autre champ que j'ai déjà ajouté dans la base de données précédemment, qui s'affiche correctement dans la page produit mais que je ne souhaite pas avoir dans le back office.)

Edited by Pounyet (see edit history)
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...