Jump to content

Modification du validator Product->name ne marche pas


Recommended Posts

Bonjour,

Depuis une mise à jour récente sur presta 1.7.6.5 ma surcharge de Product pour modifier le validator sur le champ name ne marche plus.

Et même en modifiant le validator dans le modèle ça ne change rien (j'ai besoin de pouvoir mettre des > et < dans le nom). J'ai essayé isString ou isAnything mais non.

J'ai essayé de dump & die dans les méthode du validator mais elles ne sont pas appelée.

Où est ce que c'est géré à présent? ou ais-je raté quelque chose?

Link to comment
Share on other sites

J'ai trouvé où c'était géré à présent :

Dans le fichier src\PrestaShopBundle\Form\Admin\Product\ProductInformation.php ligne 164.

On se trouve la regex qui valide le name.

Par contre normalement il doit y avoir un hook appelé pour chaque formulaire des controllers admin : action<AdminControllerName>FormModifier (voir https://devdocs.prestashop.com/1.7/modules/concepts/hooks/list-of-hooks/ ).

Mais j'ai beau greffer un module sur actionAdminProductsControllerFormModifier ou actionAdminProductsFormModifier il est jamais trigger.

Le hook n'existe pas? rappel je suis en 1.7.6.5.

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

Comme @Eolia on va patienter qu'un spécialiste de la version 1.7, pardopn, des versions 1.7 avec symfony vienne éclairer nos lanternes car si PrestaShop pousse cette version dans les mains du publique je n'ai pas constaté le moindre support sur ce forum en provenance des pro symfony et de cette 1.7 ... peut être qu'elle n'existe que pour qu'ils puissent faire du business, je ne sais guère.

Link to comment
Share on other sites

Solution :

Modifier d'abord : prestashop/classes/validate.php

public static function isCatalogName($name)
    {
        // return preg_match(Tools::cleanNonUnicodeSupport('/^[^<>;=#{}]*$/u'), $name);
        return preg_match(Tools::cleanNonUnicodeSupport('/^[^;=#{}]*$/u'), $name);
    }

Puis : prestashop\src\PrestaShopBundle\Form\Admin\Product\ProductInformation.php

'constraints' => [
                        new Assert\Regex([
                            // 'pattern' => '/[<>;=#{}]/',
                            'pattern' => '/[;=#{}]/',
                            'match' => false,
                        ]),
                        new Assert\NotBlank(),
                        new Assert\Length(['min' => 3, 'max' => 128]),
                    ],

Il faut ces deux modifications. Si tu regarde bien les "<>" ont été supprimé. Pense toujours à commenter le code d'origine pour revenir à l'ancienne version du code(mets des commentaires pour comprendre pourquoi tu as modifié ces codes afin de t'y retrouver).

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