我正在实施一些文件上传字段,我遇到了一些困难。 我跟着这个article,一切都很完美,直到我试图更新我的模型。 如果我没有填写文件字段,则在保存后将其清除。我在Google上搜索topic。我修改了我的代码,但是现在,当我尝试修改另一个字段时,它不会保存,除非我也修改了图像字段。 哪里有问题? 我的型号代码:
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Company']))
{
$model->attributes=$_POST['Company'];
$the_image = CUploadedFile::getInstance($model,'image');
if (is_object($the_image) && get_class($the_image)==='CUploadedFile')
$model->image = $the_image;
if($model->save())
if (is_object($the_image))
$model->image->saveAs(Yii::getPathOfAlias('webroot') . '/upload/' . $model->image);
$this->redirect(array('view','id'=>$model->id));
}
$this->render('update',array(
'model'=>$model,
}
这些是我模型中的规则:
array('name', 'required'),
array('type, number, rating, user_id', 'numerical', 'integerOnly'=>true),
array('name, image, address, site, mail', 'length', 'max'=>1000),
array('text', 'safe'),
array('image', 'file', 'types'=>'jpg, gif, png'),
array('image', 'unsafe'),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, type, name, text, address, site, mail, number, rating, user_id', 'safe', 'on'=>'search'),
请帮帮我。我不知道为什么它不起作用。
答案 0 :(得分:3)
尝试修改更新scenario上的image
属性规则,如下所示:
array('image', 'file', 'types'=>'jpg, gif, png','allowEmpty' => true, 'on'=>'update'),
我找到了这个提示here,希望它适合你。
答案 1 :(得分:0)
public function uploadMultifile ($model,$attr,$path)
{
if($sfile=CUploadedFile::getInstances($model, $attr)){
foreach ($sfile as $i=>$file){
$formatName=time().$i.'.'.$file->getExtensionName();
$file->saveAs(Yii::app()->basePath .DIRECTORY_SEPARATOR.'..'. $path.$formatName);
// $model->image->saveAs(Yii::app()->basePath . '/../studentimage/' . $date . $model->image);
$ffile[$i]=$formatName;
}
return ($ffile);
}
}
public function actionCreate()
{
$model=new Subject;
// $model->date_erected = date('Y-m-d');
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Subject']))
{
$model->attributes=$_POST['Subject'];
if($filez=$this->uploadMultifile($model,'imagea','/../images/views/'))
{
$model->documents=implode(",", $filez);
}
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}