我试图添加一个文件上传字段到一个形式在YII,而它成功地提交和上传文件到正确的文件夹,它没有添加任何东西到数据库。YII文件上传没有添加到数据库使用表格
我只学习这个平台,所以任何指导都会很棒。
这是我的看法......
<div class="row">
<div class="span4"><?php echo $form->labelEx($model,'slider_image'); ?></div>
<div class="span5"><?php echo $form->fileField($model,'slider_image'); ?></div>
<div class="span3"><?php echo $form->error($model,'slider_image'); ?></div>
</div>
这里是我的控制器......
public function actionEdit() {
$id = Yii::app()->getRequest()->getQuery('id');
$model = CustomPage::model()->findByPk($id);
if (!($model instanceof CustomPage)) {
Yii::app()->user->setFlash('error',"Invalid Custom Page");
$this->redirect($this->createUrl("custompage/index"));
}
if(isset($_POST['CustomPage'])) {
$model->attributes = $_POST['CustomPage'];
$model->image=CUploadedFile::getInstance($model,'slider_image');
if ($model->validate()) {
if ($model->deleteMe) {
$model->delete();
Yii::app()->user->setFlash('info',"Custom page has been deleted");
$this->redirect($this->createUrl("custompage/index"));
} else {
$model->request_url = _xls_seo_url($model->title);
if (!$model->save()) {
Yii::app()->user->setFlash('error',print_r($model->getErrors(),true));
} else {
$model->image->saveAs(Yii::app()->baseUrl.'images/'.$model->image);
Yii::app()->user->setFlash('success',
Yii::t('admin','Custom page updated on {time}.',array('{time}'=>date("d F, Y h:i:sa"))));
$this->beforeAction('edit'); //In case we renamed one and we want to update menu
}
}
}
}
}
和我的模型
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
// other rules
array('slider_image', 'file', 'types'=>'jpg, gif, png'),
);
}
形式本身总体工作正常,不幸的是,我不明白如何YII增加到数据库
感谢
阿德里安
编辑:香港专业教育学院也明显得到了slider_image
场在该表
你的控制器代码会做的是保存在upoloaded文件的文件名的数据库表。另一件事是:你的代码'$ model-> image = CUploadedFile :: getInstance($ model,'slider_image');'是指错误的属性。我认为它应该是'$ model-> slider_image = CUploadedFile :: getInstance($ model,'slider_image');'最后,你需要调用'$ model-> slider_image-> save('path.to.file') ;'为了将文件保存到磁盘。 –
谢谢你解决了这个问题! – Adrian
很高兴我能帮到你。刚发布解决方案作为答案,以便其他人可以轻松找到答案。 –