Posts Tagged ‘admin controller’

Prestashop 1.7 Identifier si un controller admin a été migré vers symfony

Un petit article rapide qui fait suite aux nombreux retours que j’ai dans les commentaires de certains de mes tutoriels liés à l’administration de Prestashop.

Un des objectifs principal de cette version est de migrer l’ensemble de l’administration vers le framework symfony, au fur et à mesure des nouvelles versions le nombre de page migrées sera donc de plus en plus important.

Et par ricochet mes anciens articles ne seront plus applicables.

Le moyen le plus simple pour vérifier si le controller est migré vers symfony et de consulter son url.

Les anciennes urls ( non symfony ) sont sous la forme

https://prestashop-site.com/admin-dev/index.php?controller=AdminAddresses&

Le terme « controller » est présent dans l’url.

Visuellement les listings se présentent de cette manière :

Controller admin prestashop legacy

Les nouvelles urls (avec symfony ) sont sous la forme

https://prestashop-site.com/admin-dev/index.php/sell/customers/

Le terme « controller » n’est pas présent dans l’url.

Visuellement les listings se présentent de cette manière

Prestashop controller symfony

Ces éléments devraient être suffisant pour vous permettre d’identifier dans quel type de controller admin vous vous trouvez 🙂

 

 …

2 commentaires

Prestashop : Utilisation avancée des AdminController

Cet article est la suite est de celui qui présente le fonctionnement de base et qui est consultable ici : https://www.h-hennes.fr/blog/2018/11/15/prestashop-admincontroller-pour-un-module/
Il présente les fonctionnalités avancées disponibles dans un adminController réalisé dans le cadre d’un module et il aura vocation a être modifié ou complété au fur et à mesure.
Voici le détails des points qui seront évoqués :

Général :

  • Gestion de la toolbar
    • Changement du titre
    • Ajout d’un bouton d’action
  • Ajouter une action
  • Validation spécifique
  • Gestion d’images
  • Appels Ajax
  • Surcharger le template

Listing :

  • Champs active / non active
  • Ajouter un callback sur un champ
  • Ajouter des actions de masse personnalisée
  • Récupérer les données de plusieurs tables

Formulaire :

  • Lier des champs en ajax
  • Afficher des contenus totalement personnalisé

Options :

  • Ensemble des cas d’affichage d’options
  • Traitement spécifique d’une option

Général :

Gestion de la toolbar :

Ajouter un titre sur la page

Ce point est géré par la fonction initToolbarTitle

    /**
     * Affichage d'un titre personnalisé
     */
    public function initToolbarTitle()
    {
        parent::initToolbarTitle();
 
        switch ($this->display) {
            case '':
            case 'list': //Titre pour le listing
                array_pop($this->toolbar_title);
                $this->toolbar_title[] = $this->module->l('Custom Title for listing');
                break;
            case 'add': //Titre pour l'ajout et l'édition d'un objet
            case 'edit':
                array_pop($this->toolbar_title);
                if (($sample = $this->loadObject(true)) && Validate::isLoadedObject($sample)) {
                    $this->toolbar_title[] = sprintf($this->module->l('Editing sample %s'),$sample->name);
                } else {
                    $this->toolbar_title[] = $this->module->l('Creating a new sample');
                }
                break;
        }
    }

Title controller

Ajouter un bouton d’action :
Cet élément est géré par la fonction initPageHeaderToolbar

public function initPageHeaderToolbar()
    {
 
        //Bouton d'ajout ( standard )
        $this->page_header_toolbar_btn['new'] = array(
            'href' => self::$currentIndex .
5 commentaires

Prestashop : créer un admin controller pour un module

Nous allons voir les différentes étapes pour réaliser facilement un controller admin basique lié à un module Prestashop.
Puis nous verrons ensuite les caractéristiques de base d’un controller admin, cet article sera complété par un autre pour voir les fonctionnalités avancées 😉
Cet article est disponible ici : https://www.h-hennes.fr/blog/2019/01/30/prestashop-utilisation-avancee-admincontroller/

Note : A partir de la version 1.7.5 de Prestashop il est possible d’utiliser d’utiliser le framework symfony et de suivre le même fonctionnement que les nouveaux controller admin de prestashop, je ferais sans doute un article ultérieurement.
Ce tutoriel reste tout de même valide sur cette version et les suivantes pour l’instant.

Pour cela nous allons créer un module « samplemodule ».
Le code complet est visible sur github : https://github.com/nenes25/prestashop_samplemodule/tree/admin

Les prérequis suivants sont nécessaires pour réaliser un controller admin pour votre module :

  • Création d’une « Tab »
  • Utilisation d’un objet Prestashop héritant de la classe ObjectModel ( et de la base de données qui lui est associée )

Pour l’objet Prestashop nous partirons sur un objet fictif « Sample » avec les propriétés suivantes :

  • name : nom de l’objet
  • code : code de l’objet
  • email : email de l’objet
  • title : titre de l’objet ( différent en fonction de la langue )
  • description : description de l’objet ( différent en fonction de la langue )

Le code suivant sera dans le fichier classes/Sample.php du module

class Sample extends ObjectModel
{
 
    public $id;
    public $name;
    public $code;
    public $email;
    public $title;
    public $description;
 
    public static $definition = [
        'table' => 'hh_sample',
        'primary' => 'id_sample',
        'multilang' => true,
        'fields' => [
            // Champs Standards
            'name' => ['type' => self::TYPE_STRING, 'validate' => 'isName', 'size' => 255, 'required' => true],
            'code' => ['type' => self::TYPE_STRING, 'validate' => 'isLinkRewrite', 'size' => 255, 'required' => true],
            'email' => ['type' => self::TYPE_STRING, 'validate' => 'isEmail', 'size' => 255, 'required' => true],
            //Champs langue
            'title' => ['type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'size' => 255,],
            'description' => ['type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml',],
        ],
    ];
}

 

Pour la création de la tab et de la base de donnée c’est le module qui se charge de gérer tout cela lors de son installation.…

5 commentaires


Archives

Compte Github