PHP code example of griiv / prestashop-module-contracts
1. Go to this page and download the library: Download griiv/prestashop-module-contracts library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
griiv / prestashop-module-contracts example snippets
namespace VotreNamespace;
use Griiv\Prestashop\Module\Contracts\Module\ModuleAbstract;
class VotreModule extends ModuleAbstract
{
protected $nameSpace = 'VotreNamespace\\';
public function __construct()
{
$this->name = 'votremodule';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'Votre Nom';
$this->need_instance = 0;
parent::__construct();
$this->displayName = $this->trans('Votre Module', [], 'Modules.Votremodule.Admin');
$this->description = $this->trans('Description de votre module', [], 'Modules.Votremodule.Admin');
}
public function getHooks(): array
{
return [
'displayHeader',
'actionProductUpdate',
];
}
}
namespace VotreNamespace\Display;
use Griiv\Prestashop\Module\Contracts\Hook\Hook;
use Griiv\Prestashop\Module\Contracts\Hook\Contracts\DisplayHookInterface;
class DisplayHeader extends Hook implements DisplayHookInterface
{
public function display($params): string
{
$this->setTplName('header');
$this->context->smarty->assign([
'custom_var' => 'valeur',
]);
return $this->getModule()->fetch($this->getTpl());
}
}
namespace VotreNamespace\Action;
use Griiv\Prestashop\Module\Contracts\Hook\Hook;
use Griiv\Prestashop\Module\Contracts\Hook\Contracts\ActionHookInterface;
class ActionProductUpdate extends Hook implements ActionHookInterface
{
public function action($params): bool
{
$product = $params['product'];
// Votre logique métier ici
return true;
}
}
namespace VotreNamespace;
use Griiv\Prestashop\Module\Contracts\Module\ModuleAbstract;
use Griiv\Prestashop\Module\Contracts\Concern\ModuleTrait;
use Griiv\Prestashop\Module\Contracts\Concern\IsUsingNewTranslationSystem;
use Griiv\Prestashop\Module\Contracts\Concern\IsMcpCompliant;
class VotreModule extends ModuleAbstract
{
use ModuleTrait;
use IsUsingNewTranslationSystem;
use IsMcpCompliant;
// Vous avez maintenant accès à :
// - getTranslationDomain() : retourne le domaine de traduction
// - getModuleToken(string $controller) : génère un token de sécurité
// - isUsingNewTranslationSystem() : active le nouveau système de traduction
// - isMcpCompliant() : déclare la compatibilité MCP
}
namespace VotreNamespace\Display;
use Griiv\Prestashop\Module\Contracts\Attribute\AsPrestaShopHook;
use Griiv\Prestashop\Module\Contracts\Hook\Hook;
use Griiv\Prestashop\Module\Contracts\Hook\Contracts\DisplayHookInterface;
#[AsPrestaShopHook(name: 'displayHeader', module: 'votremodule')]
class DisplayHeader extends Hook implements DisplayHookInterface
{
public function display($params): string
{
// ...
}
}
// Obtenir le kernel Symfony
$kernel = static::getKernel();
// Récupérer un service
$service = static::getService('nom.du.service');
// Obtenir un paramètre
$parameter = static::getParameter('nom_du_parametre');
// Accéder à l'EntityManager Doctrine
$em = static::getEntityManager();
src/
├── Attribute/
│ └── AsPrestaShopHook.php # Attribut PHP 8.0+ pour hooks
├── Concern/
│ ├── IsMcpCompliant.php # Trait de compatibilité MCP
│ ├── IsUsingNewTranslationSystem.php # Trait nouveau système de traduction
│ └── ModuleTrait.php # Trait avec méthodes utilitaires
├── DependencyInjection/
│ └── CompilerPass/
│ └── PrestaShopHookCompilerPass.php # CompilerPass Symfony pour hooks
├── Hook/
│ ├── Contracts/
│ │ ├── ActionHookInterface.php # Interface pour hooks d'action
│ │ ├── AdditionalHookInterface.php # Interface pour hooks additionnels
│ │ ├── DisplayHookInterface.php # Interface pour hooks d'affichage
│ │ ├── FilterHookInterface.php # Interface pour hooks de filtrage
│ │ └── ValidateHookInterface.php # Interface pour hooks de validation
│ └── Hook.php # Classe de base pour les hooks
└── Module/
├── Contracts/
│ └── ModuleInterface.php # Interface du module
└── ModuleAbstract.php # Classe abstraite du module
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.