Estendere un widget

Ciao ragazzi,

volevo estendere il widget Pager per tradurre in italiano le costanti scritte in inglese.

Ho provveduto quindi ad inserire la classe in protected/components:


class CLinkPager extends CLinkPager

{

	const CSS_FIRST_PAGE='primo';

	const CSS_LAST_PAGE='ultimo';

	const CSS_PREVIOUS_PAGE='precedente';

	const CSS_NEXT_PAGE='prossimo';

	const CSS_INTERNAL_PAGE='pagina';

	const CSS_HIDDEN_PAGE='hidden';

	const CSS_SELECTED_PAGE='selected';


}

Ma non ho ottenuto nessun risultato sperato :P

Dove sbaglio?

Ciao per estendere un widget io proverei così:




class MyCLinkPager extends CLinkPager

{

	public function init()

	{

		parent::init();

		$this->nextPageLabel='prossimo';

		$this->prevPageLabel='precedente';

		$this->firstPageLabel='primo';

		$this->lastPageLabel='ultimo';

		$this->header='vai a pagina: '

		// $this->htmlOptions['id']=$this->getId();

		// $this->htmlOptions['class']='yiiPager';

	}

}



Tuttavia, ti consiglierei di leggerti la guida sulla internazionalizzazione:

Internationalization

In pratica, Yii è già localizzato in italiano. E’ sufficiente configurare la tua applicazione per utilizzare la lingua italiana e magicamente i widget saranno rappresentati in italiano.

Infatti, se vai a vedere il metodo init della classe CLinkPager troverai del codice tipo:




if($this->nextPageLabel===null)

     $this->nextPageLabel=Yii::t('yii','Next >');



Quindi è inutile estendere CLinkPager: nel tuo caso basta seguire la guida sulla internazionalizzazione.

Prova ad aggiungere, nel tuo file protected/config/main.php:




return array(

    [...],

    'sourceLanguage' => 'en',

    'language' => 'it',

);



Grazie mille, mi sei stato di grande aiuto.

Non c’e’ bisogno di estenderlo se devi fare solo questo:

  • Puoi usare widget factory per specificare le properieta’ che ti servono

  • Puoi impostare la lingua italiana, e’ gia’ tutto tradotto.