Jump to content

[resolu] override Address, ajout d'un champs ps 1.5, visibilité modèle


Recommended Posts

Bonjour,

Je souhaite ajouter un champs (iban) dans ma table address.

Je me suis inspiré du tuto suivant.

 

http://blog.manit4c....ous-prestashop/

 

J'ai essayé ceci en créant une classe héritée d' AddressCore,

 


class Address extends AddressCore {

public $iban;//on declare notre nouveau champs


public function getFields() {
 error_log("Address::getFields", 0);
	 $fields=parent::getFields();
	 $fields['iban'] = pSQL($this->iban);//on ajoute le champ pour la validation et l'enregistrement
	   return $fields;
 }
}

 

dans:

override/classes/Address.php

 

et aussi dans:

module/monmodule/override/classes/Address.php

 

(J'ai essayé les deux). Je n'ai rien mis d'autre dans mes dossier override.

 

Mon problème est que dans un cas comme dans l'autre, ma classe est ignorée.

Y aurait il une démarche supplémentaire à effectuer pour qu'elle soit prise en compte?

Une convention de nommage à respecter que j'ignore?

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

  • 4 weeks later...

Voila comment il fallait faire:

 

Address::$definition['fields']['iban'] = array ('type' => ObjectModel::TYPE_STRING, 'validate' => 'isString');

class Address extends AddressCore {

  public $iban;//on declare notre nouveau champs

}

 

Le principe est valable pour les classes dérivées d'ObjectModel

 

Merci à http://www.zaibatsu....-prestashop-1-5

 

Par ailleurs, deux ou trois trucs à côté desquels j'étais passé: (Merci de corriger si j'ai mal compris)

-Quand on définit un override, ça se fait dans le dossier override à la racine de prestashop, comme indiqué dans la doc anglophone: ps 1.5 overriding default behaviors, en respectant la structure de sous-dossiers.

-Le fichier /cache/class_index.php indexe les classes, comme son nom l'indique. Donc:

-en regardant son contenu, on peut voir si prestashop a connaissance de notre override

-en l'effaçant, on peut (et on doit) forcer prestashop à le régénérer, afin de prendre en compte un changement (ajout ou suppression d'override)

 

-Si on fait un override dans un module installé, prestashop n'en tient pas compte. Le dossier override dans un module permet d'y mettre les classes surchargées afin qu'à l'installation du module, ces classes soient installées dans le répertoire override racine. Je ne sais pas trop comment ça se passe à l'install du module s'il est à la charge du dev de faire la copie, ou si ps integre un mécanisme automatique pour le faire (sachant que c'est délicat, dans le cas ou plusieurs modules surchargent une même classe).

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