[rtl]سلام
خیلی ناگهانی حس پست گذاشتنم اومد
برای سفارشی کردن 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'
),
)); ?>