Les controlleurs admins affichent une erreur s'il ne sont pas reliés à un menu (sur la 1.6).
Controlleur le plus basique qu'on peut faire :
controllers/front/fichierController.php
<?php
class TopstarProControllerCore extends FrontController
{
public $php_self = 'TopstarPro';
public $isLogged;
protected $ajax_refresh = false;
/**
* Initialize order opc controller
* @see FrontController::init()
*/
public function init()
{
parent::init();
}
}
On va l'override dans /override/controllers/front/fichierController.php
<?php
class TopstarProController extends TopstarProControllerCore
{
public $php_self = 'TopstarPro';
public $isLogged;
protected $ajax_refresh = false;
public function init()
{
parent::init();
}
/**
* Assign template vars related to page content
* @see FrontController::initContent()
*/
public function initContent()
{
parent::initContent();
$this->setTemplate(_PS_THEME_DIR_.'upload-pro-card.tpl');// Définit le template qui est utilisé pour ce controlleur
}Renvoyer sur une méthode de classe via un paramètre en GET :
// Gestion des méthodes pour l'upload
if ( Tools::isSubmit('method') )
{
if( method_exists($this, Tools::getValue('method')) )
{
$method = Tools::getValue('method');
$ress = $this->$method();
return $ress;
}
else if ( !empty(Tools::getValue('method')) )
{
throw new PrestaShopException('Unknown method "'.Tools::getValue('method').'"');
}
}
Créer une page : http://stackoverflow.com/questions/14336006/create-custom-page-in-prestashop-1-5-3#answer-14337210
Pour qu'il s'affiche, il faut aller créer un template dans /admin/themes/nom_du_theme/template/nom_du_template.tpl, puis ajouter ce code au controller :
public function initContent()
{
parent::initContent();
$this->setTemplate('crowd_export_profil.tpl'); // Définit le template qui est utilisé pour ce controlleur
}