Pahami dulu bahwa Eksekusi Action itu adanya di Controller bukan di View Jadi jangan taroh coding Open FPDF di View.
Step 0. Taroh FPDF di /protected/extensions/
A. Direct Button
Step 1. Taroh Action ini menjadi salah satu action di PostController
public function actionHelloWorld()
{
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
}
Step 2. Eksekusi Command adalah: http://localhost/blog/post/HelloWorld
B. Dengan CFormModel
Step 1. Taroh di Controller menjadi salah satu Action
public function actionHelloWorld2()
{
$model=new FAllocation;
if(isset($_POST['FAllocation']))
{
$model->attributes=$_POST['FAllocation'];
if($model->validate()) {
$pdf=new H0F1_report2();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Arial','',12);
$pdf->report2($model->begindate,$model->enddate);
$pdf->Output();
}
}
$this->render('report2',array('model'=>$model));
}
Step 2. Bikin CFormModel taroh di folder Model
class FAllocation extends CFormModel
{
public $begindate;
public $enddate;
public function rules()
{
return array(
//array('begindate, enddate', 'required'),
array('begindate, enddate', 'type', 'type'=>'date', 'dateFormat'=>'yyyy-MM-dd'),
);
}
public function attributeLabels()
{
return array(
'begindate'=>'Periode Mulai',
'enddate'=>'Periode Selesai',
);
}
}
Step 3. Buat View Report 2 untuk menampilkan Form yang kita buat di Step 2. Remember, di kode ini ada CJuiDatePicker, Remove aja kalau nggak mau pake…
<?php
$this->breadcrumbs=array(
'Report Allocation',
);
?>
<h1>My Report2</h1>
<div class="wide form">
<?php $form=$this->beginWidget(‘CActiveForm’, array(
'id'=>'allocation-form',
'enableAjaxValidation'=>false,
)); ?>
<div class="row">
<?php echo $form->labelEx($model,'begindate'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'value'=>CTimestamp::formatDate('yyyy-MM-dd',$model->begindate),
'attribute'=>'begindate',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
),
));
?>
<?php echo $form->error($model,'begindate'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'enddate'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'value'=>CTimestamp::formatDate('yyyy-MM-dd',$model->enddate),
'attribute'=>'enddate',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
),
));
?>
<?php echo $form->error($model,'enddate'); ?>
</div>
<div class="row submit">
<?php echo CHtml::submitButton('Report'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
Step 4. Ketika Form ini dieksekusi, ingat ada 2 parameter yang di pass ke Action HelloWorld2 di PostController, BeginDate dan EndDate, So Code untuk FPDF adalah
<?php
class H0F1_report2 extends fpdf
{
//Page footer
function Footer()
{
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
$this->SetFont('Arial','I',<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='8)' />;
//Page number
$this->Cell(0,10,'Print Date: '. SParameter::IndoFormat() . ' ' .
'Page: '.$this->PageNo().'/{nb}' . ' ' .
'Report Code: H0F1/RP2',0,0,'C');
}
function Report2($id,$ad)
{
//Kode Buat FPDF-nya..
}
}
?>
Kalau binun, let’s discuss it later…