paolo@bimodesign.com | +34 608 61 64 10

Framework

        

Yii: Tips and Tricks per il CMS

In questo articolo, raccolgo alcuni suggerimenti per migliorare l'usabilita' del CMS che avete appena creato con Yii nell' articolo precente, in questo mio blog.
L'elenco sara' schematico ed in alcuni casi inseriro' i link alle risorse presenti sul web, senza dilungarmi troppo

Come cambiare l'aspetto della prima pagina In questo paragrafo, vedremo come inserire il logo della propria applicazione, dove si trovano i file CSS da modificare (nel mio caso li lascero' intatti) e come visualizzare i menu' alle varie pagine, sia nel caso di un utente guest sia come admin o altro utente loggato
Innanzitutto, il file della view principale, che e' valido sia per la parte esterna che per quella interna (dopo il login) si trova qui:

protected/views/layout/main.php

Come potete notare e' piuttosto semplice da modificare, ma vi illustro lo stesso come fare per:
- Inseririre l'immagine del logo
Nel div header modificare nel seguente modo

<div id="header">
   <div id="logo"><img src="<?php echo Yii::app()->request->baseUrl; ?>/images/logo.png"> <?php echo CHtml::encode(Yii::app()->name); ?></div>
</div>

L'immagine del logo deve essere presente in questa directory:

$HOME/images/

- Modificare ed inserire nuovi menu'
Appena al di sotto del div header, trovate quello denominato mainmenu che va modificato nel seguente modo. Se il menu' che inserite sara' visibile nella parte esterna, allora il codice da inserire sara' del tipo

array('label'=>'Quienes Somos', 'url'=>array('../site/page', 'view'=>'about'),'visible'=>Yii::app()->user->getId()===null),

altrimenti se sara' visibile solo agli utenti che hanno effettuato il login al CMS, allora il codice e' questo

array('label'=>'Payments', 'url'=>array('../querty'),'visible'=>Yii::app()->user->getId()!=null),

Come potete vedere, cambia solo la verifica del getId().

Come cambiare l'aspetto di ogni sezione o menu'
Premetto che preferisco che la prima pagina di ogni menu', visualizzi la griglia e l'elenco degli elementi presenti nella tabella, cambiandola con quella che viene per default, che e' poco chiara.
Per fare questo, occorre modificare, per ogni voce di menu' il metodo actionIndex() del relativo controller. Ad esempio per il menu Users il controller sara' questo

/protected/controllers/UsuariosController.php

e modificheremo, semplicemente sostituendo il codice presente nel metodo actionIndex() con quello presente nel metodo actionAdmin

Come modificare i campi select,data, etcc... delle form
- Ordinare i risultati
Per ordinare velocemente i risultati, ad esempio per ID o per data decrescente, modificare nel model il metodo search aggiungendo nel return dell'active record, queste poche righe di codice

	return new CActiveDataProvider($this, array(
		'criteria'=>$criteria,
       -->      'sort'=>array(  
       -->      'defaultOrder'=>array(
       -->          'CAMPO della TABELLA'=>true,
       -->      )
            ),

- Eliminare colonne in visualizzazione
Per eliminare alcune delle colonne in visualizzazione, occorre semplicemente, per ogni modulo/menu, accedere al relativo file admin.php presente nella dir

/protected/views/usuarios/admin.php

ed eliminare, o meglio commentare, le colonne non necessarie.

- Modificare Nomi delle colonne e loro dimensione
Sempre nello stesso file admin.php, occorre assegnare gli attributi utilizzando un array, ovvero modificando nel seguente modo

	array('name'=>'date',
              'header'=>'Fecha',
              'htmlOptions'=>array("width"=>"500px"),
             ),

- Recuperare descrizione relativa ad una colonna id
Vi rimando a questo link, che lo spiega perfettamente.
- Inserire bottone export CSV nell'admin
Anche in questo caso, vi rimando a questo link, che lo spiega perfettamente.
- Eliminare la possibilita' di eseguire il delete (l'icona delete.png)
Sempre nel file

/protected/views/usuarios/admin.php

sostituire il codice

	array(
		'class'=>'CButtonColumn',
	),

con il seguente. Attenzione ad indicare l'identificatore corretto per l'update e la view.

array(
'class'=>'CButtonColumn',
'buttons'=>array(
'update' => array
(
'url'=>'Yii::app()->createUrl("user/update", array("id"=>$data->ID))',
),
'view' => array
(
'url'=>'Yii::app()->createUrl("user/view", array("id"=>$data->ID))',
),
'delete' => array
(
'url'=>'Yii::app()->createUrl("user/delete", array("id"=>$data->ID))',
 'visible'=>'false',
),
),
),

- Aumentare numero elementi nella pagination
Modificare nel modelo il metodo search, aggiungendo al CActiveDataProvider questo elemento

   'pagination'=>array(
                      'pageSize'=>50,
                ),


Nota: L'articolo e' in continuo aggiornamento...