Jump to content

Property Cart->id_currency is empty at line 917


Recommended Posts

Bonjour,

J'ai quelques articles depuis plusieurs années pour lequel il faut remplir 5 champs textes obligatoires. Depuis peu et de manières aléatoires, le fait de cliquer sur enregistrer pour mémoriser la valeur des champs me déclenche une erreur 500 et donc adieu la commande.

en passant en mode DEV, voici l'erreur :

Property Cart->id_currency is empty
at line 917 in file classes/ObjectModel.php

912.             }
913. 
914.             $message = $this->validateField($field, $this->$field);
915.             if ($message !== true) {
916.                 if ($die) {
917.                     throw new PrestaShopException($message);
918.                 }
919.                 return $error_return ? $message : false;
920.             }
921.         }
922. 
ObjectModelCore->validateFields - [line 246 - classes/ObjectModel.php]
ObjectModelCore->getFields - [line 487 - classes/ObjectModel.php]
ObjectModelCore->add - [line 196 - classes/Cart.php] - [2 Arguments]
CartCore->add - [line 190 - controllers/front/ProductController.php]
ProductControllerCore->initContent - [line 189 - classes/controller/Controller.php]
ControllerCore->run - [line 367 - classes/Dispatcher.php]
DispatcherCore->dispatch - [line 41 - override/classes/Dispatcher.php]
Dispatcher->dispatch - [line 28 - index.php]

Merci par avance, toutes les idées sont bienvenues

🙂

 

Link to comment
Share on other sites

Perso je l'ai patché comme ça (Même erreur mais avec des commandes créées en BO) en attendant de débuguer le truc:

    public function validateFields($die = true, $error_return = false)
    {
        foreach ($this->def['fields'] as $field => $data) {
            if (!empty($data['lang'])) {
                continue;
            }

            if (is_array($this->update_fields) && empty($this->update_fields[$field]) && isset($this->def['fields'][$field]['shop']) && $this->def['fields'][$field]['shop']) {
                continue;
            }

            $message = $this->validateField($field, $this->$field);
            if ($message !== true) {
                if ($die) {
                    //throw new PrestaShopException($message);
                    @PrestaShopLogger::addLog('Error on validateField', 3, $this->$field, $field);
                }
                return $error_return ? $message : false;
            }
        }

        return true;
    }

On évite le die() et on log l'erreur.

  • Like 1
Link to comment
Share on other sites

Euh, non^^

Trouvez la fonction ci-dessus dans le fichier et commentez cette ligne en ajoutant // devant

//throw new PrestaShopException($message);

Et mettez celle-ci juste en dessous:

@PrestaShopLogger::addLog('Error on validateField', 3, $this->$field, $field);

 

Link to comment
Share on other sites

  • 3 months later...
Le 26/01/2022 à 4:56 PM, Eolia a dit :

Oui, normalement je donne du code qui fonctionne :P 

Un ptit mot pour remercier car j'ai eu le même message d'erreur (caché sous une erreur 500) et j'ai pu le régler grâce à vous, merci.

Par contre pour moi çà se produisait seulement dans ce cas : depuis le panier (one page), suppression de l'ensemble des produits (message "panier vide" affiché) puis déconnexion du client. Et là : erreur 500 ! 😪

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

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