Updating Image in Yii2

While updating image using Yii2 I'm facing a problem with the validation.Its always asking me to upload an image. But I don't want this. Always updating an image is not necessary.

I tried skipOnEmpty but its not working properly it cause effect while uploading a photo, which is also incorrect.

Please help!!

Model

public function rules()
    {
        return [
            [['carid', 'name'], 'required'],
            [['carid', 'coverphoto', 'status'], 'integer'],
            [['name'], 'string', 'max' => 200],
            [['imageFiles'], 'image','extensions' => 'png, jpg, jpeg, gif', 'maxFiles' => 4, 'minWidth' => 100, 'maxWidth' => 800, 'minHeight' => 100, 'maxHeight'=>600,'skipOnEmpty' => true],


        ];
    }

Controller

public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->photoid]);
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    }

You should to use scenario for update.

Like as, Add on condition in model's rule for applying scenario .

 [['imageFiles'], 'image','extensions' => 'png, jpg, jpeg, gif', 'maxFiles' => 4, 'minWidth' => 100, 'maxWidth' => 800, 'minHeight' => 100, 'maxHeight'=>600,'skipOnEmpty' => true, 'on' => 'update-photo-upload'],

And use that scenario in controller's action.

public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $model->scenario = 'update-photo-upload';
    ........
    .....
}

try rule as

[
    ['imageFiles'], 'file',
    'extensions' => 'png, jpg, jpeg, gif', 
    'mimeTypes' => 'image/jpeg, image/png',
    'maxFiles' => 4, 
    'minWidth' => 100, 
    'maxWidth' => 800, 
    'minHeight' => 100, 
    'maxHeight'=>600,
    'skipOnEmpty' => true
],

This is working in my case, hope it works for you too.


        **Your View Like This**

        <?php use yiiwidgetsActiveForm;?>
        <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
        <?= $form->field($model, 'imageFiles')->fileInput() ?>
        <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
         </div>
        <?php ActiveForm::end() ?>

    *** Your Controller Like This******

    use Yii;
    use yiiwebController;
    use appmodelsUploadForm;
    use yiiwebUploadedFile;

    class SiteController extends Controller
    {
        public function actionUpdate()
        {
            $model = new UploadForm ();
            $model->scenario = 'update';
            if (Yii::$app->request->isPost) {
                $model->imageFiles= UploadedFile::getInstance($model, 'imageFiles');
                if ($model->upload()) {
                    // file is uploaded successfully
                    return;
                }
            }

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

 ***** Your ModelLike This ******

use yiibaseModel;
use yiiwebUploadedFile;

class UploadForm extends Model
{
    /**
     * @var UploadedFile[]
     */
    public $imageFiles;

    public function rules()
    {
        return [
             [['carid', 'name'], 'required'],
             [['carid', 'coverphoto', 'status'], 'integer'],
             [['name'], 'string', 'max' => 200],
             [['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4,'on'=>'update'],
        ];
    }

    public function upload()
    {
        if ($this->validate()) { 
            foreach ($this->imageFiles as $file) {
                $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension);
            }
            return true;
        } else {
            return false;
        }
    }

function scenario()
{
    return [
        'create' => ['imageFiles ', 'carid','name','coverphoto','status'],
        'update' => ['imageFiles ', 'carid','name','coverphoto','status'],
    ];
  }
}
链接地址: http://www.djcxy.com/p/88132.html

上一篇: 如何使用SQL获取整个链接组详细信息?

下一篇: 在Yii2中更新图像