Yii Form içinde Dosya Yükleme

Form oluştururken dosya yüklemek gereken durumlar oluşabilmekte. Bunun için aşağıdaki düzenlemeleri yaparak istediğimiz formatta dosyaların yüklenebilmesini sağlayabiliriz.

view/ _form

widget içine

‘enableAjaxValidation’=>false,
‘htmlOptions’ => array(
‘enctype’ => ‘multipart/form-data’,
),

<div class=”row”>
<?php echo $form->labelEx($model,’resimadi’); ?>
<?php echo CHtml::activeFileField($model, ‘resimadi’); ?>
<?php echo $form->error($model,’resimadi’); ?>
</div>

<?php if(!$model->isNewRecord){ ?>
<div class=”row”>
<?php echo CHtml::image(Yii::app()->request->baseUrl.’/duyurular/’.$model->resimadi,”resimadi”,array(‘style’=>’width:50px;height:50px’));

// yüklü olan resmi gösteriyor.

?>
</div>
<?php } ?>

 


controller/create

$model=new Duyurular;

// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);

if(isset($_POST[‘Duyurular’]))
{
$model->attributes=$_POST[‘Duyurular’];

$rnd = rand(0,9999);
$uploadedFile=CUploadedFile::getInstance($model,’resimadi’);
$fileName = “{$rnd}-{$uploadedFile}”; // random number + file name
$model->resimadi = $fileName;
if($model->save())
{
$uploadedFile->saveAs(Yii::app()->basePath.’/../duyurular/’.$fileName); // image will uplode to rootDirectory/duyurular/
$this->redirect(array(‘view’,’id’=>$model->id));
}
}

$this->render(‘create’,array(
‘model’=>$model,
));


controller/update

$model=$this->loadModel($id);

// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);

if(isset($_POST[‘Duyurular’]))
{
$_POST[‘Duyurular’][‘resimadi’] = $model->resimadi;
$model->attributes=$_POST[‘Duyurular’];

$uploadedFile=CUploadedFile::getInstance($model,’resimadi’);

if($model->save()){

if(!empty($uploadedFile)) // check if uploaded file is set or not
{
$uploadedFile->saveAs(Yii::app()->basePath.’/../duyurular/’.$model->resimadi);
}

$this->redirect(array(‘view’,’id’=>$model->id));
}

}

$this->render(‘update’,array(
‘model’=>$model,
));


model/duyurular

rules içine dosya uzantılarını tanımlamamız gerekmekte.

array(‘resimadi’, ‘file’,’types’=>’jpg, gif, png’, ‘allowEmpty’=>true, ‘on’=>’update’),