2016-03-11 4 views
0

В контроллереYii2: Не в состоянии Обновления нескольких изображений

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

     if ($model->load(Yii::$app->request->post())) 
     { 
      $imageName = $model->room_type; 
      $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles'); 
      $all_files_paths = []; 
       foreach ($model->imageFiles as $file_instance) 
       { 
        $path = 'uploads/room_img/' . $file_instance->baseName . '.' . $file_instance->extension; 
        $file_instance->saveAs($path); 
        $all_files_pathes []= $path; 
        $model->images .= $path . ';'; 
       } 
      $model->save(false); 
      return $this->redirect(['view', 'id' => $model->id]); 
} 

     else 

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

в правилах раздела

[['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4,'skipOnEmpty' => true, 'on' => 'update-photo-upload'], 

попытался с помощью scenario, но возвращаясь для просмотра без каких-либо изменений в изображениях.

Загрузка нескольких файлов изображений и сохранение пути в базе данных как

uploads/room_img/1059.jpg;uploads/room_img/1060.jpg;uploads/room_img/1064.jpg; 

Im вставив несколько файлов в базе данных, разделенных ;, не в состоянии обновить путь изображения

actioncreate()

public function actionCreate() 
    { 
     $model = new RoomTypes(); 
     if ($model->load(Yii::$app->request->post())) 
     { 
      $imageName = $model->room_type; 
      $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles'); 
      $all_files_paths = []; 
       foreach ($model->imageFiles as $file_instance) 
       { 
        $path = 'uploads/room_img/' . $file_instance->baseName . '.' . $file_instance->extension; 
        $file_instance->saveAs($path); 
        $all_files_pathes []= $path; 
        $model->images .= $path . ';'; 
       } 
    $model->save(false); 
    return $this->redirect(['view', 'id' => $model->id]); 
} 
     else 
     { 
      return $this->render('create', 
       [ 
       'model' => $model, 
      ]); 
     } 
    } 
+0

Если вы загружаете одно изображение, работа по обновлению? – scaisEdge

+0

Да, его работа над одним изображением, но не на нескольких – JKLM

+0

Как вы получите имя изображения .. показать связанный вид и объяснить, как вы работаете/используете этот вид – scaisEdge

ответ

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

    $oldFiles = explode(";", $model->imageFiles); 

    if ($model->load(Yii::$app->request->post())) { 

     foreach ($oldFiles as $actFile) { 

       if (trim($actFile) != '') { 
       unlink('uploads/room_img/' . $actFile); 
       } 
     } 

     $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles'); 
     $all_files_paths = []; 
      foreach ($model->imageFiles as $file_instance) 
      { 
       $path = 'uploads/room_img/' . $file_instance->baseName . '.' . $file_instance->extension; 
       $file_instance->saveAs($path); 
       $all_files_pathes []= $path; 
       $model->images .= $path . ';'; 
      } 
    $model->save(false); 
    return $this->redirect(['view', 'id' => $model->id]); 
    } 

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

получаю эту ошибку 'ошибка синтаксиса, неожиданные«)», ожидая«(»' 'в Еогеасп ($ oldFiles как actFiles) {// удалить старые файлы .. }' – JKLM

+0

все та же ошибка – JKLM

+0

у меня есть обновление ответ ... обменялся параметром во взрыве .. но я надеюсь, что вы понимаете предложение .. – scaisEdge

Смежные вопросы