Détail du message 44249.7

Message numéro 7 dans le sujet Extensibilité de RBS Change : structure des données.

  • 44249.7 en réponse à 44249.6 écrit par ecoco

    20/03/2012 17:23


    Jean-Michel
    Titre : Community Manager
    Rang : Expert
    Bonjour,

    Concernant votre premier problème ; sur la non prise en compte de la contrainte, je n'arrive pas à reproduire votre problème, en suivant les indications décrites dans les différentes étapes et en faisant des copier/coller des fragments de codes fournis. Avez-vous rechargé votre interface backoffice après le "compile-all" ou n'y a-t-il pas une faute de frappe dans la déclaration des contraintes?
    A noter : l'ajout de la contrainte ne va pas rendre impossible la saisie d'une valeur négative dans le champ, mais va plutôt empêcher l'enregistrement du document, comme le montrent les zones entourées en rouge dans la capture d'écran ci-jointe.

    Pour le second point, disons que ça n'a pas trop de sens de localiser la propriété "material" mais c'est l'item de la liste qui doit être localisé (le matériel utilisé ne change pas quelque soit la langue que l'on utilise).
    La question soulevée a permis de découvrir un bug sur l'absence du getter adapté (getMaterialLabelAsHtml() dans notre cas) lorsque l'on fait appel à une propriété localisée définie par une liste, ce qui adonné lieu au ticket 56046.

    Deux choix se présentent à vous
    * soit vous souhaitez conserver cette propriété comme localisée (même si ça n'a pas vraiment de sens) et vous ajoutez dans la classe finale du document (modules/project/persistentdocument/product.class.php) le code suivant :
            /**
             * @return String
             */
            public function getMaterialLabelAsHtml()
            {
                    $list = list_ListService::getInstance()->getByListId('modules_project/materiallist');
                    if ($list === null)
                    {
                            return null;
                    }
                    $listItem = $list->getItemByValue($this->getMaterial());
                    if ($listItem === null)
                    {
                            return null;
                    }
                    return f_util_HtmlUtils::textToHtml($listItem->getLabel());
            }
    

    Après avoir modifié la classe finale du document product n'oubliez pas de lancer la commande "php framework/bin/change.php compile-aop" (contenu dans compile-all) afin que ce soit bien pris en compte (exécutez la commande pour chaque modification que vous ferez dans cette classe).

    * soit vous abandonnez le côté localisé de cette propriété en supprimant du modèle l'attribut "localized" de la propriété "material" et vous exécutez la commande "php framework/bin/change.php compile-all" qui fera le nécessaire. A ce moment le getter "getMaterialLabelAsHtml()" est disponible.

    Édité par Jean-Michel 20/03/2012 17:29


    Pour une meilleure réponse, pensez à indiquer la version sur laquelle vous rencontrez des difficultés, ainsi que son type (CMS ou eCommerce core).
    Pour tout problème d'installation indiquez le nom de l'hébergeur et s'il s'agit d'un serveur mutualisé ou dédié.
 
1387 membres
Aucun membre connecté