Jump to content

Edit History

Paolo75

Paolo75

Bonjour à tous,

j'ai développé un module Prestashop qui me permet de configurer moi-même des paramètres assez divers dans ma boutique (slogans, titres, paragraphes etc...). J'ai réussi à créer un tab dans le menu du back-office qui affiche un controller admin.

Problème : je n'ai absolument pas besoin d'un ObjectModel mais Prestashop semble refuser de me laisser soumettre des formulaires dans mon controlleur, voici comment j'affiche mon formulaire :

<?php

class AdminMasocieteController extends ModuleAdminController
{
  
// Données fictives ... mais toujours la même erreur
static $definition = array(
	'table' => 'fake_table',
	'primary' => 'id_fake',
	'multilang' => TRUE,
	'fields' => array(
	)
);

/**
* @see ModuleAdminController::__construct()
* @return none
*/

public function __construct()
{
	$this->bootstrap = true;
	$this->meta_title[] = 'Module Masociete';
	$this->toolbar_title[] = 'Module Masociete';
	$this->className = 'Masociete';
	$this->name = 'Masociete';
	$this->defaultLang = (int)Configuration::get('PS_LANG_DEFAULT');
	parent::__construct();
}

/**
* @see ModuleAdminController::initContent()
* @return mixed
*/

public function initContent()
{
	parent::initContent();
	$this->context->smarty->assign(array(
		'content' => $this->content . $this->context->smarty->fetch(_PS_MODULE_DIR_ . 'masociete/views/templates/admin/admin.tpl')
	));
}

/**
* Render forms
* @return array
*/

public function renderForm()
{
	
	$helper = new HelperForm();
	$helper->module = $this->module;
	$helper->identifier = $this->className;
	$helper->token = Tools::getAdminTokenLite('Admin'.$this->name);
	$helper->languages = $this->_languages;
	$helper->currentIndex = $this->context->link->getAdminLink('Admin'.$this->name);
	$helper->default_form_language = $this->defaultLang;
	$helper->allow_employee_form_lang = $this->defaultLang;
	
	$fields[0]['form'] = [
		'input' => [
			[
				'type' => 'text',
				'label' => ' Titre du bloc',
				'name' => 'titre_du_bloc'
			]
		],
		'submit' => [ 'title' => 'Sauvegarder', 'class' => 'btn btn-default pull-right' ]
	];
	
	$helper->fields_value['titre_du_bloc'] = 'Voilà un titre fictif.'
	return $helper->generateForm($fields);
}

(j'ai raccourci pour ne pas vous polluer avec les fonctions inutiles dans l'exposé de mon problème ici)

Le formulaire s'affiche bien, mais quand je le submit je tombe sur une erreur qui semble en rapport avec le $definition qui sert à donner des informations sur le modèle à utiliser. Hors je n'en ai pas et je n'en veux pas, ce qui ne me semble pas impossible à faire étant donné tous les modules Prestashop que je vois et qui utilisent des controller admin pour générer leur page de configuration.

J'ai essayé de donner des informations fictives, en vain.

Comment faire alors ? Suis-je obligé de passer par le bouton "Configuration" de mon module pour arriver à mes fins ? Je l'ai déjà fait dans le cadre d'un autre module mais étant donné que l'on ne peut ni personnaliser le template ni accrocher un tab, je préférerais passer par un controlleur admin.

Merci d'avance pour votre aide !

Sans titre.jpg

Paolo75

Paolo75

Bonjour à tous,

j'ai développé un module Prestashop qui me permet de configurer moi-même des paramètres assez divers dans ma boutique (slogans, titres, paragraphes etc...). J'ai réussi à créer un tab dans le menu du back-office qui affiche un controller admin.

Problème : je n'ai absolument pas besoin d'un ObjectModel mais Prestashop semble refuser de me laisser soumettre des formulaires dans mon controlleur, voici comment j'affiche mon formulaire :

<?php

class AdminMasocieteController extends ModuleAdminController
{

	/**
	* @see ModuleAdminController::__construct()
	* @return none
	*/

	public function __construct()
	{
		$this->bootstrap = true;
		$this->meta_title[] = 'Module Masociete';
		$this->toolbar_title[] = 'Module Masociete';
		$this->className = 'Masociete';
		$this->name = 'Masociete';
		$this->defaultLang = (int)Configuration::get('PS_LANG_DEFAULT');
		parent::__construct();
	}
	
	/**
	* @see ModuleAdminController::initContent()
	* @return mixed
	*/

    public function initContent()
    {
		parent::initContent();
		$this->context->smarty->assign(array(
			'content' => $this->content . $this->context->smarty->fetch(_PS_MODULE_DIR_ . 'masociete/views/templates/admin/admin.tpl')
		));
    }

	/**
	* Render forms
	* @return array
	*/

    public function renderForm()
    {
		
        $helper = new HelperForm();
        $helper->module = $this->module;
        $helper->identifier = $this->className;
        $helper->token = Tools::getAdminTokenLite('Admin'.$this->name);
        $helper->languages = $this->_languages;
        $helper->currentIndex = $this->context->link->getAdminLink('Admin'.$this->name);
        $helper->default_form_language = $this->defaultLang;
        $helper->allow_employee_form_lang = $this->defaultLang;
		
		$fields[0]['form'] = [
			'input' => [
				[
					'type' => 'text',
					'label' => ' Titre du bloc',
					'name' => 'titre_du_bloc'
				]
			],
			'submit' => [ 'title' => 'Sauvegarder', 'class' => 'btn btn-default pull-right' ]
		];
		
		$helper->fields_value['titre_du_bloc'] = 'Voilà un titre fictif.'
		return $helper->generateForm($fields);
    }

(j'ai raccourci pour ne pas vous polluer avec les fonctions inutiles dans l'exposé de mon problème ici)

Le formulaire s'affiche bien, mais quand je le submit je tombe sur une erreur qui semble en rapport avec le $definition qui sert à donner des informations sur le modèle à utiliser. Hors je n'en ai pas et je n'en veux pas, ce qui ne me semble pas impossible à faire étant donné tous les modules Prestashop que je vois et qui utilisent des controller admin pour générer leur page de configuration.

J'ai essayé de donner des informations fictives, en vain.

Comment faire alors ? Suis-je obligé de passer par le bouton "Configuration" de mon module pour arriver à mes fins ? Je l'ai déjà fait dans le cadre d'un autre module mais étant donné que l'on ne peut ni personnaliser le template ni accrocher un tab, je préférerais passer par un controlleur admin.

Merci d'avance pour votre aide !

Sans titre.jpg

×
×
  • Create New...