0

我已经使用use kartik\file\FileInput;(扩展)从单个表单提交中保存多个图像。图像保存在本地,但不保存在数据库中。

这是我的模型代码 media.php

namespace app\models;
use yii\web\UploadedFile;
class Media extends \yii\db\ActiveRecord
{
        public function rules(){
        return [
            [['title'], 'file', 'skipOnEmpty' => false, 'extensions' => ['gif', 'jpg', 'png', 'jpeg', 'JPG', 'JPEG', 'PNG', 'GIF'], 'checkExtensionByMimeType' =>  false ,'maxFiles' => 4, 'maxSize' => 1024 * 1024 * 1024],
                        [['extension'], 'string', 'max' => 6],
                ];        
        }

控制器代码:

if ($mediamodel->load ( Yii::$app->request->post () )) {
    $title = UploadedFile::getInstances ( $mediamodel, 'title' );
    foreach ($title as $key => $file)          {
        $file->saveAs(Yii::$app->basePath . '/web/images/hotel/'. $file->baseName . '.' . $file->extension);}
        foreach ($title as $key => $file){   
        echo $mediamodel->title."*********";
        $mediamodel->title = $file->baseName . '.' . $file->extension;
        echo " \Title: ".$mediamodel->title;
        $mediamodel->save ();
    }
}

我的查看代码:

use kartik\file\FileInput; 
$form = ActiveForm::begin([ 'layout' => 'horizontal', {label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}", 
    'fieldConfig' => ['horizontalCssClasses' => ['label' => 'col-md-3','offset' => 'col-md-offset-2','wrapper' => 'col-md-4', 'error' => '','hint' => '',],],'
    options' => [ 'class' => 'form-horizontal', 'enctype' => 'multipart/form-data', ], ]);?>

<?php echo $form->field($mediamodel, 'title[]')->widget(FileInput::classname(), ['options'=>['multiple' => true]]); 
Html::submitButton($model->isNewRecord ? 'Add' : 'Update');
4

2 回答 2

1

// 你应该处理这样的错误。

if(!$mediamodel->save()){
    // handle the errors of model.
    var_dump($mediamodel->getErrors());
}
于 2016-05-30T15:03:37.167 回答
1

利用

$mediamodel->save (false);

代替

$mediamodel->save ();
于 2016-06-03T05:50:59.527 回答