سفارشی سازی Cfromater ( آموزشی )

[rtl]سلام

خیلی ناگهانی حس پست گذاشتنم اومد :lol:

برای سفارشی کردن CFormater و اضافه کردن توابع مورد نیازمون بهش کافیه که یک کلاس جدید به پروژه اضافه کنیم و اونو از CFromater توسعه بدیم

[/rtl]




class EFormater extends  CFormatter{


	public function formatJalaliDate($value){

		if($value == "0000-00-00 00:00:00")

			return "-";

		return JDateTime::Instance()->date("Y/m/d",strtotime($value));

	}

	public function formatFarsiNumber($value){

		return JDateTime::Instance()->convertNumbers($value);

	}

	public function formatFarsiDecimal($value){

		return JDateTime::Instance()->convertNumbers(number_format($value,0,".","،"));

	}

} 



[rtl]

مثلا من اینجا 3 تابع مورد نیازمو اضافه کردم.

حالا باید به Yii معرفی کنیم کلاسمون رو که میریم داخل فایلم Config مون و توی قسمت Components خطوط زیر رو اضافه میکنیم که باعث میشه Formater با کلاس خودمون جای گزین بشه :)

[/rtl]


...

'format'=>array(

	'class'=>'EFormater',

	'booleanFormat'=>array('خیر','بله')

),

...

[rtl]

البته من نوع boolean رو هم از داخل config فارسی کردم -_-

حالا میتونیم از توابعمون توی GridView و CListView و CDetailView یا هرچیزی که از Formater پشتیبانی کنه استفاده کنیم مثل زیر

[/rtl]




$this->widget('zii.widgets.grid.CGridView', array(

	'dataProvider'=>$model->search(),

	'columns'=>array(

		'id:farsiNumber',

		'title:farsiNumber',

		'price:farsiDecimal',

		'create_date:jalaliDate',

		'published:boolean'

	),

)); ?>