Jump to content

[URGENT] Affichage de la liste client


Recommended Posts

Bonjour,

je rencontre un problème qui me tracasse depuis 2 semaines déjà. je suis en stage depuis 2 mois et je dois faire une application pour ma soutenance. le projet qui m'a été confié au stage est la création d'un module. dans ce module je dois afficher la liste des clients exactement présenté comme l'onglet client de prestashop 1.6. j'aimeraiafficher cette meme liste là dansmon module. j'ai besoin de votre aide svp . voici à quoi ressemble la liste qui est dans l'onglet client que je veux afficher. 

 

post-1060010-0-37172500-1438338182_thumb.png

Edited by K.M.R72 (see edit history)
Link to comment
Share on other sites

j'ai déjà regardé le code du controlleur "AdminCustomers.php" qui concerne l'affichage de la liste. j'ai même essayé de l'inclure dans le fichier accueil de mon module . vu que le tableau qui affiche la liste des clients est placé dans le constructeur de "AdminCustomers.php" , lors de l'inclusion il devait être appelé automatiquement mais ce n'est pas le cas. la liste des clients ne s'affiche toujours pas dans mon module 

Link to comment
Share on other sites

j'ai essayé en copiant la function __construct() de admincustomer dans la function  __construct() de la page de mon module, ça ne signale pas d'erreur mais ça n'affiche pas la liste. svp pouvait créer un module et faire un exemple pour mieux m'expliquer? je vous en serai hyper reconnaissant car il me reste plus que 2 semaines pour finir mon application et ce n'est que cette liste qui manque

Link to comment
Share on other sites

Bonjour,

 

Une piste pour ton développement serait de faire un controller admin pour ton module qui hérite de la classe AdminCustomersController.
Du coup il récupère déjà toutes les fonctionnalités de listing de ce controller.

Link to comment
Share on other sites

Bonjour,

merci pour votre réponse mais je suis un peu perdu, pouvez-vous me consacrer un peu de votre temps pour faire un exemple svp. la fonction que je veux récupérer est celle qui affiche un tableau avec la liste des clients.

je vous remercie d'avance

Link to comment
Share on other sites

Salut,

j'ai suivi le tuto sur le lien que vous avez mis, mais ça ne m'affiche toujours pas le tableau qui contient la liste des clients,  ça ne m'affiche même pas de tableau comme dans l'exemple du lien. bref ça ne m'affiche rien du tout. le temps passe et je n'avance toujours pas, je suis toujours stréssé et je dois remettre mon application dans une semaine.

svp jsi vous pouvez faire un exemple et des captures d'écran pour me montrer.

Je vous remercie d'avance.

Link to comment
Share on other sites

Bon je t'ai fait un exemple rapide de ma première proposition ( surcharge du controller AdminCustomersController. )
Voici un module squelette qui fait un peu près ce que tu veux ( ultra basique car fait en 5 min, mais fonctionel )

 

Ce module est à créer dans modules/testmodule/

 

testmodule.php

<?php
class testmodule extends Module
{

    public function __construct()
    {
        $this->author = 'testmodule';
        $this->name = 'testmodule';
        $this->tab = 'testmodule';
        $this->version = '0.1.0';
        $this->need_instance = 0;

        parent::__construct();

        $this->displayName = $this->l('Prestashop Module');
        $this->description = $this->l('Personalise description with description module');
    }

    /**
     * Installation du module
     */
    public function install()
    {
		if ( !parent::install())
        return false;

		//Création d'une tab prestashop ( nécessaire pour le controller back office )
        $tab = new Tab();
        $tab->class_name = 'customer'; //Nom du controller Admin du module
        $tab->module = $this->name;
        $languages = Language::getLanguages();
        foreach ($languages as $lang) {
            $tab->name[$lang['id_lang']] = 'PersonnalCustomers';
        }
        try {
            $tab->save();
        } catch (Exception $e) {
            echo $e->getMessage();
            return false;
        }
		return true;
    }

    /**
     * Désinstalation du module
     */
    public function uninstall()
    {
        return parent::uninstall();
    }

	/**
	 * Configuration du module
	 */
	public function getContent()
	{
		$content = '<a href="'.$this->context->link->getAdminLink('customer').'">Acces clients perso</a>';
		return $content;
	}

}

controllers/admin/customer.php

<?php

/**
 * Controller Admin du module qui surcharge le controller prestashop standard
 */
class customerController extends AdminCustomersController
{
	/**
	 * Remise en place des surcharges modules
	 */
	public function __construct()
	{
		parent::__construct();

	}

	/**
	 * Surcharge token car problème de sécurité
	 * (Corriger ce point)
	 */
	public function checkToken()
	{
		$token = Tools::getValue('token');
		return (!empty($token) && $token === $this->token);
	}

}

?>

Après c'est à toi d'adapter cela à tes besoins.

Link to comment
Share on other sites

Désolé j'ai réessayé et ça fonction, ça me redirige vers l'onglet client qui affiche la liste des clients. merci mais c'est pas vraiment ce que je veux, ce que je veux c'est que la liste des clients s'affcihe dans mon module et que lorsqu'on je choisis un client, j'ai ses informations car à partir sur informations j'ai des modificatons à faire , c'est pour cette raison que je veux pas que ça me redirige .

Link to comment
Share on other sites

A toi de surcharger les méthodes nécessaires pour que cela fasse ce que tu veux si tu veux te baser sur ce controller.
Sinon comme évoqué plus haut les helperLists / HelperForm sont fait pour ça.
Et au pire si tu ne parviens pas à appréhender leur fonctionnement, reste toujours l'option de tout coder tout à la main.

Link to comment
Share on other sites

Bonjour,

je te remercie HERVE25 pour ta disponibilité. j'ai opté pour l'une de tes solutions en utilisant la helperList. voici ma fonction 

public function renderList(){

{

$sql = 'SELECT * FROM '._DB_PREFIX_.'customer';

 

if($result = Db::getInstance()->executeS($sql)){

 

 $this->fields_list = array(

 'id_customer' => array(

 'title' => $this->l('Id'),

 'width' => 140,

 'type' => 'text',

 ),

 'firstname' => array(

  'title' => $this->l('Name'),

  'width' => 140,

 'type' => 'text',

 ),

);

 

 $helper = new HelperList();

     

 $helper->shopLinkType = '';

     

 $helper->simple_header = true;

     

// Actions to be displayed in the "Actions" column

 $helper->actions = array('edit', 'delete', 'view');

     

 $helper->identifier = 'id_customer';

 $helper->show_toolbar = true;

 $helper->title = 'HelperList';

 $helper->table = $this->firstname.'_customer';

     

$helper->token = Tools::getAdminTokenLite('AdminModules');

 $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->firstname;

return $helper->generateList($result, $this->field_list);

}

return false;

 

}

 

et voici ma fonction du getContent():

 

public function getContent()

{

$this->_html = '';

 

if (Tools::isSubmit('btnSubmit'))

{

$this->_postValidation();

if (!count($this->_postErrors))

$this->_postProcess();

else

foreach ($this->_postErrors as $err)

$this->_html .= $this->displayError($err);

}

 

$this->_html .= $this->_displayRecharge();

$this->_html .= $this->renderForm();

$this->_html .= $this->renderList();

 

return $this->_html;

}

 

ça m'affiche un tableau comme celui des helperList sauf que l'intérieur du tableau est vide, il n'ya pas de clients. je sais pas où est l'erreur, pouvez-vous m'aider svp?

Link to comment
Share on other sites

Voici un code fonctionnel qui gère déjà la base.

  • Affichage du listing des clients
  • Affichage du formulaire d'édition.
/**
	 * Configuration du module
	 */
	public function getContent()
	{
		//Affichage du détails d'un client
		if (Tools::getIsset('viewcustomer'))
		{
			$this->_html .= $this->_displayCustomer();
		}
		else if (Tools::getIsset('updatecustomer'))
		{
			$this->_html .= $this->_updateCustomer();
		}
		//Suppression d'un client
		else if (Tools::getIsset('deletecustomer'))
		{
			$this->_html .= $this->_deleteCustomer();
		}
		//Action par défaut affichage de la liste
		else
		{
			//Affichage de la liste des clients
			$this->_html .= $this->_renderList();
		}

		return $this->_html;
	}

	/**
	 * Affichage de la liste des clients
	 */
	private function _renderList()
	{
		$sql = 'SELECT * FROM '._DB_PREFIX_.'customer';

		if ($result = Db::getInstance()->executeS($sql))
		{

			//Les champs à afficher
			$fields_list = array(
				'id_customer' => array(
					'title' => $this->l('Id'),
					'width' => 140,
					'type' => 'text',
				),
				'firstname' => array(
					'title' => $this->l('FirstName'),
					'width' => 140,
					'type' => 'text',
				)
			);

			$helper = new HelperList();
			$helper->shopLinkType = '';
			$helper->simple_header = false;
			$helper->actions = array('edit', 'delete', 'view');
			$helper->identifier = 'id_customer';
			$helper->show_toolbar = true;
			$helper->title = 'Listing client';
			$helper->table = 'customer';
			$helper->token = Tools::getAdminTokenLite('AdminModules');
			$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

			return $helper->generateList($result, $fields_list);
		}

		return false;
	}

	/**
	 * Affichage d'un client
	 */
	private function _displayCustomer()
	{

	}

	/**
	 * Maj d'un client
	 */
	private function _updateCustomer()
	{
		//Nouvel objet client
		$customer = new Customer(Tools::getValue('id_customer'));

		$form_fields = array(
			'form' => array(
				'legend' => array('title' => $this->l('Edit customer'), 'icon' => 'icon-cogs'),
				'description' => $this->l('Edit customer'),
				'input' => array(
					array(
						'type' => 'text',
						'label' => $this->l('firstname'),
						'name' => 'firstname',
						'required' => true,
					),
					array(
						'type' => 'text',
						'label' => $this->l('lastname'),
						'name' => 'lastname',
						'required' => true,
					)
				),
				'submit' => array(
					'title' => $this->l('Save'),
					'class' => 'button btn btn-default pull-right',
				)
			),
		);

		//Nouveau HelperFrom
		$helper = new HelperForm();
		$helper->show_toolbar = false;
		$lang = new Language((int) Configuration::get('PS_LANG_DEFAULT'));
		$helper->default_form_language = $lang->id;
		$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
		$this->fields_form = array();
		$helper->id = $customer->id;
		$helper->identifier = 'editCustomer';
		$helper->submit_action = 'SubmitCustomer';
		$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
		$helper->token = Tools::getAdminTokenLite('AdminModules');
		$helper->tpl_vars = array(
			'fields_value' => array('firstname' => $customer->firstname, 'lastname' => $customer->lastname),
			'languages' => $this->context->controller->getLanguages(),
			'id_language' => $this->context->language->id
		);


		return $helper->generateForm(array($form_fields));
	}

	/**
	 * Suppression d'un client
	 */
	private function _deleteCustomer()
	{
		
	}
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...