Я не могу понять, что не так, подскажите пожалуйста
Модель:
Код: Выделить всё
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use app\models\Products;
/**
*Класс загрузки картинок
*/
class ProductImageUpload extends Model
{
public $img_arr;
public function rules()
{
return [
[['img_arr'], 'required'],
[['img_arr'], 'default', 'value' => 'default_img.jpg'],
[['img_arr'], 'file', 'extensions' => 'png, jpg', 'maxFiles' => 8],
];
}
public function uploadFiles($files, $curImagesStr)
{
$curImages = explode(',', $curImagesStr);//получаем из строки массив с именами существующих картинок.
if($curImages !== '')
{
foreach ($curImages as $img)//удаляем существующие картинки
{
if(file_exists($this->getFolder() . $img))//Проверка на существование файлов
{
unlink($this->getFolder() . $img);//Удаляем файлы
}
}
}
$fileName_arr = array();//Объявляем массив с именами картинок. Он пока пуст.
foreach ($files as $file) //Прогоняем через форич каждый элемент массива с картинками.
{
$fileName = strtolower(md5(uniqid($file->baseName))) . '.' . $file->extension; //Создаем уникальное имя для картинки
$file->saveAs($this->getFolder() . $fileName); //Сохраняем файл на сервер.
$fileName_arr[] = $fileName; //Добваляем новое имя файла в массив с именами файлов
}
$fileName_str = implode(',', $fileName_arr); //Превращаем массив с именами файлов в стрку.
return $fileName_str; //Возвращаем строку с именами файлов.
}
private function getFolder()
{
return Yii::getAlias('@web') . 'img/product_img/';
}
}
Код: Выделить всё
public function actionSetImage($id) //Если используем КамелКейс, то в html пишем название через дифис
{
$model = new ProductImageUpload;
if(Yii::$app->request->isPost)
{
$product = $this->findModel($id);
$files = UploadedFile::getInstances($model, 'img_arr');
$product->saveImagesDB($model->uploadFiles($files, $product->img_arr));
return $this->redirect(['view', 'id' => $product->id]);
}
return $this->render('images', ['model' => $model]);
}