objectmodel

Prestashop: Générer des modèles via la console

Cet article est la suite de Prestashop : Générer des modules via la console.

Toujours dans la même logique d’optimisation de création des modules via la ligne de commande 🙂

Je rappelle également  que cette fonctionnalité n’est pas disponible via la console native de Prestashop ( disponible à partir de prestashop 1.7 ) mais sur mon outil de console externe : prestashopConsole ( cf. https://github.com/nenes25/prestashop_console )

Cette fois-ci l’idée est de pouvoir générer rapidement et facilement un modèle associé à votre module qui héritera de la classe ObjectModel de Prestashop, le tout sans écrire une seule ligne de code 🙂

Une nouvelle commande fait donc son apparition :

module:generate:model

Les paramètres obligatoires sont :

  • Nom du module
  • Classe du Modèle.

Voici par exemple comment créer un objet Sample pour le module hhdev

./prestashopConsole.phar module:generate:model hhdev Sample

Une saisie interactive va ensuite vous demander les informations nécessaires à la création de votre modèle.

Pour l’exemple nous souhaitons que cet objet ait les propriétés suivantes :

  • table : sample ( Nom de la table sql sans le prefix )
  • primary : id_sample ( Clé primaire de l’objet )
  • Champs :
    • name ( Nom du champ )
      • type : string
      • obligatoire : oui
      • validation : isName
      • longueur : 100 ( Longueur maximum du champ )
      • langue : Non
    • firstname
      • type: string
      • obligatoire : non
      • validation : isName
      • longueur : 120
      • langue: non
    • email
      • type: string
      • obligatoire : oui
      • validation: isEmail
      • longueur : 100
      • langue : non
    • description
      • type : string
      • obligatoire : non
      • validation: isCleanHtml
      • langue : oui

Voici l’aperçu des informations qui sont saisies pour générer ce modèle.…

Prestashop: Générer des modèles via la console Lire la suite »

Prestashop : Charger un objet via n’importe quel champ

Durant les derniers mois j’ai travaillé de manière régulière avec la solution concurrente « Magento » qui permets le chargement et la récupération d’informations sur les objets de manière très souple via n’importe quel champ.
Cette fonctionnalité n’est malheureusement pas disponible à ce jour avec Prestashop, (version 1.5.4.1 à ce jour ), mais avec le mécanisme des override, il est relativement aisé d’adapter cette logique.

Mon besoin a été motivé par la nécessité d’ajouter de nombreux champs spécifiques sur un site prestashop en cours de développement.

/!\ Cette méthode nécessite au minimum php en version 5.3 pour fonctionner.

Voici les codes à mettre en place dans le fichier override/classes/ObjectModel.php

<?php
 
abstract class ObjectModel extends ObjectModelCore
{
 
    /**
     * Rajout de la possibilité de récupérer un objet par n'importe quel champ
     * (Il est nécessaire de l'instancier avant)
     * 
     * @param string $field champ de la table 
     * @param string $value valeur du champ de la table
     * @return int id_object : identifiant de l'objet
     */
    public static function getObjectIdByField($field = '', $value='') {
 
		$className = get_called_class();   
        return Db::getInstance()->getValue("SELECT ".

Prestashop : Charger un objet via n’importe quel champ Lire la suite »