Jump to content

Pagina di configurazione di un modulo con HelperForm e HelperList


Galaron

Recommended Posts

Salve a tutti, ho iniziato da poco a lavorare con Prestashop ed ho installata la versione 1.5.6, quindi invoco subito il vostro perdono per la mia ignoranza in materia.
Sto realizzando un modulo dotato di pagina di configurazione: in questa pagina, oltre al form di configurazione che ho realizzato tramite HelperForm (e che funziona perfettamente), vorrei che comparisse anche una lista che mi permetta di manipolare una tabella MySQL che ho creato ad-hoc. Cercando sulla documentazione, ho trovato la classe HelperList che fa proprio al caso mio, ma non ho ben capito come si usa: devo mettere tutto alla classe del modulo (che estende la classe Module), o devo creare un'altra classe? Al momento la situazione è questa:
 
class MioModulo extends Module{

public function __construct(){
   // Codice del costruttore
}

public function install(){
   // Codice metodo install
}

public function uninstall(){
   // Codice metodo uninstall
}

public function getContent(){
   // Codice metodo getContent
}

public function renderForm(){
   // Codice per generare l'HelperForm

   $fields_list = array(
    			'id_order' => array(
    					'title' => $this->l('Order ID'),
    					'width' => 80,
    					'align' => 'center',
    					'type' => 'int',
    					'orderby' => true
    			),
    			'order_status' => array(
    					'title' => $this->l('Status'),
    					'width' => 100,
    					'align' => 'center',
    					'type' => 'bool',
    					'icon' => array(
    								0 => 'disabled.gif',
    								1 => 'enabled.gif',
    								'default' => 'disabled.gif'
    					)
    			),
    			'tracking' => array(
    					'title' => $this->l('Tracking code'),
    					'width' => auto,
    					'type' => 'text',
    					'search' => false
    			),
    			'error_message' => array(
    					'title' => $this->l('Error message'),
    					'width' => auto,
    					'type' => 'text',
    					'search' => false
    			),
    	);
    	$helperList = new HelperList();
    	$helperList->table = self::$mysql_table_name;
    	$helperList->_select = Db::getInstance()->ExecuteS('SELECT * FROM ' ._DB_PREFIX_. self::$mysql_table_name);
    	
    	$helperList->module = $this;
    	$helperList->title = $this->l('Orders');
    	$helperList->token = Tools::getAdminTokenLite('AdminModules');
    	$helperList->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
    	$helperList->show_toolbar = false;
    		
    	$helperList->simple_header = false;
    		
    	// Actions to be displayed in the "Actions" column
    	$helperList->actions = array('delete', 'view');
    	
    	return $helper->generateForm($fields_form) . "<br/>" . $helperList->generateList($helperList->_select, $fields_list);

}

}

Il risultato che ottengono, è che accedendo alla pagina di configurazione del mio modulo, vedo in alto l'HelperForm (che ricordo funzionare perfettamente) ed in basso l'HelperList popolata con i record della mia tabella. Però molte cose non funzionano: se ad esempio provo a filtrare i risultati per id o status (le prime due colonne), non succede nulla. Ogni singola riga continua ad essere cliccabile, anche se ho provato a specificare il contrario con

$helperList->list_no_link = true;

E poi, la cosa che più mi preme, non ho capito bene come/dove aggiungere il codice per far funzionare le azioni che ho richiesto con

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

(infatti se clicco sulle icone, che compaiono correttamente, in realtà non mi fa cancellare o esaminare nulla).

 

Scusate ancora se questi per voi sono argomenti di livello base, ma la documentazione di Prestashop non è proprio delle migliori...

Link to comment
Share on other sites

Ciao Luigi, intanto volevo ringraziarti per l'attenzione. Il problema però persiste: nei tuoi appunti ho trovato un tutorial su come usare l'HelperForm, che però io ho già implementato con successo. Ora mi servirebbe implementare una HelperList, ma non ho capito bene come si fa. Come ho già scritto nel primo post, la lista si vede ed è popolata con i record della tabella, ma non riesco a farci nulla: cancellare i record, esaminarli, filtrarli, ecc... Se mi sono spiegato male, faccio mea culpa e non esitare a farmelo notare. Purtroppo con Prestashop non sono ancora ferratissimo...

Link to comment
Share on other sites

  • 2 years later...

Stesso identico problema.

public function initList()
{
    // Select all available extra info tabs
    $sql = 'SELECT * FROM '. _DB_PREFIX_ .'nometabella';

    if ($result = Db::getInstance()->ExecuteS($sql))
    {
        $this->fields_list = array(
            'id_recen' => array(
                'title' => 'ID',
                'width' => 'auto',
                'search' => 'true',
                'type' => 'text',
                'tmpTableFilter' => 'true',
                'havingFilter' => 'true',
                'filter_type' => 'int'
                ),
            'nome' => array(
                'title' => 'Nome',
                'width' => 'auto',
                'type' => 'text'
                ),
            'mail' => array(
                'title' => 'Mail',
                'width' => 'auto',
                'type' => 'text'
                ),
            'titolo' => array(
                'title' => 'Titolo',
                'width' => 'auto',
                'type' => 'text'
                ),
            'recensione' => array(
                'title' => $this->l('Recensione'),
                'width' => 'auto',
                'type' => 'text'
                ),
            'stelle' => array(
                'title' => 'Stelle',
                'width' => 'auto',
                'type' => 'text'
                ),
            'mostra' => array(
                'title' => 'Visualizza',
                'width' => 'auto',
                'type' => 'bool',
                'ajax'=> true,
                'icon' => array(
                        0 => 'disabled.gif',
                        1 => 'enabled.gif',
                        'default' => 'disabled.gif'
                        ),
                )
            );

        $helper = new HelperList();
        $helper->shopLinkType = '';
        $helper->identifier = 'id_recen';
        $helper->actions = array('edit', 'delete');
        $helper->show_toolbar = 'false';
        
        $helper->title = $this->displayName;
        
        $helper->table = $this->name;
        $helper->token = Tools::getAdminTokenLite('AdminModules');
        $helper->simple_header = 'false';
        $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
        
        return $helper->generateList($result, $this->fields_list);
    }

    return false;
    
}    
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...