input 写入路径保存数据库 php,使用Bootstrap fileInput上传图片,引用空值规则导致数据未写入数据库与规则错误问题...

使用Bootstrap fileInput扩展上传图片,在model的rules定义了空值验证( 'skipOnEmpty' => false),上传图片后,文件有按新文件名上传至服务器,但文件名未写入数据库,且返回视图引发空值验证规则(如图一)

35a1ef636c67b44f787cecc459da5ef9.png

请教哪位大神,controller是哪里逻辑有问题,还是该怎么做好!

Controller文件

public function actionImage($id)

{

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

$rootPath = "uploads/UserIdImage/"; //定义上传的根目录

$oldFile = $rootPath . $model->image; //保存旧头像路径与文件名,上传新的文件后删除用

if (Yii::$app->request->isPost) {

$model->image = UploadedFile::getInstance($model, 'image');

if ($model->image && $model->validate()) {

$ext = $model->image->extension;

$randName = "userid" . time() . rand(1000, 9999) . "." . $ext;

$model->image->saveAs($rootPath . $randName);

$model->image = $randName;

unlink($oldFile);

$model->save();

}

}

return $this->render('image', ['model' => $model]);

}

Model文件

public function rules()

{

return [

['status', 'default', 'value' => self::STATUS_ACTIVE],

['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],

[['email'], 'unique'],

[['email'], 'required'],

[['email'], 'email'],

[['image'], 'file', 'maxSize' => 1024 * 1024, 'skipOnEmpty' => false],

];

}

VIEW文件

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

= $form->field($model, 'image')->widget(FileInput::classname(), [

'options' => ['accept' => 'image/*'],

]);

?>

= Html::submitButton('上传', ['class' => 'btn btn-primary']) ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值