В моделе формы:
public $image_1 = null;
public $image_2;
public $video;
public function rules()
{
return array(
// username and password are required
array('image_1, image_2', 'file', 'types'=>'jpg, gif, png, jpeg', 'maxSize' => 10485760, 'allowEmpty' => true),
array('video', 'file', 'types'=>'avi, mpg, mp4, flv', 'maxSize' => '50485760', 'allowEmpty' => true),
array('image_1 ,image_2 ,video','safe'),
);
}
private function upload($param,$name){
$file = CUploadedFile::getInstance($this,$param);
$name = $name.'.'.$file->getExtensionName();
$fullname = Yii::app()->basePath.'/../public/upload/patients/'.$name;
if($file->saveAs($fullname)){
return $name;
}else{
return false;
}
}
public function save_question()
{
$trans = Yii::app()->db->beginTransaction();
try {
$question = new Questions;
if($this->image_1 !== '') $question->image_1 = $this->upload('image_1', $question->id);
if($this->image_2 !== '') $question->image_2 = $this->upload('image_2', $question->id);
if($this->video !== '') $question->video = $this->upload('video', $question->id);
if (!$question->insert()) {
throw new Exception('Error inserting account');
}
$trans->commit();
} catch (Exception $e) {
$trans->rollback();
die($e);
return false;
}
//die($this->body_part);
return true;
}
В представлении:
<?php $form=$this->beginWidget('CActiveForm', array('htmlOptions'=>array('enctype'=>'multipart/form-data')));?>
<div>
<h5>Upload your photo(s)</h5>
<?php echo $form->fileField($model, 'image_1'); ?>
</div>
<div class="foto-pict">
<?php echo $form->fileField($model, 'image_2'); ?>
</div>
<div class="foto-pict">
<h5>Upload your video</h5>
<?php echo $form->fileField($model, 'video'); ?>
</div>
<?php $this->endWidget(); ?>
На папку upload/patients поставила 777. У напарника работает, у меня - нет. Есть ли в чем-то явная ошибка?