yii2 kartik widget fileinput vs fileinput()函数

时间:2014-12-18 17:59:09

标签: php file-io widget yii2 active-form

我想上传文件并替换等等。当我在我的视图文件中使用它时:
echo $form->field($model, 'image')->fileInput();
一切正常 - 图像上传,旧图片删除。 但是,当我想要更多控制时,不是这样:

echo $form->field($model, 'image')->widget(FileInput::className(), [
  'pluginOptions' => [
    'options'=>[
        'accept'=>'image/*',
        'multiple'=>true
    ],
    'allowedFileExtensions'=>['jpg','gif','jpeg', 'png'],
    'initialPreview'=>[
        Html::img($model->getImageUrl(), ['class'=>'file-preview-image', 'alt'=>$title, 'title'=>$title]),
    ],
    'showCaption' => false,
    'showRemove' => false,
    'showUpload' => false,
    'browseClass' => 'btn btn-grey',
    'browseIcon' => '<i class="fa fa-folder-open" style="font-weight: 600; line-height: 1.3em;"></i> ',
    'browseLabel' =>  'Profilbild'
  ],
])->label(false)

最后一个版本不起作用。 我的活动形式有什么问题?

Update1:​​添加其他文件

这是控制器

$model = $this->findModel($user_id, $mail_pre);
$oldFile = $model->getImageFile();
$oldAvatar = $model->avatar;
$oldFileName = $model->filename;
[...]
$image = $model->uploadImage();
if ($image === false) {
$model->avatar = $oldAvatar;
$model->filename = $oldFileName;
[...]
if ($image !== false && unlink($oldFile)) {
$path = $model->getImageFile();
$image->saveAs($path);
return $this->redirect([
[...]

这是在ActiveRecord中:

public function uploadImage() {
$image = UploadedFile::getInstance($this, 'image');
if (empty($image)) {
    return false;
}
[...]

此处记录中的规则:

[['avatar', 'filename', 'image'], 'safe'],
[['image'], 'file', 'extensions'=>'jpg, gif, png', 'on'=>'update', 'message' => 'Wrong extension'],

0 个答案:

没有答案