Суть такова: есть 3 функции для работы с картинками
public $drivePath = '@app/web/files/images/drivers/';
public $webPath = '/web/files/images/drivers/';
public function uploadImage()
{
if (!$this->image)
return false;
$path = Yii::getAlias($this->drivePath.$this->car_id.'/');
if (!is_dir($path)) mkdir($path, 0777, true);
$filename = Yii::$app->security->generateRandomString(9);
$this->image->saveAs($path . $filename . '.' . $this->image->extension);
$this->image = $filename . '.' . $this->image->extension;
return true;
}
public function getImage()
{
$path = Yii::getAlias($this->webPath.$this->car_id.'/'.$this->image);
return Html::img($path, [
'height' => '100px',
'width' => 'auto'
]);
}
public function deleteImage()
{
$path = Yii::getAlias($this->drivePath.$this->car_id.'/'.$this->oldAttributes['image']);
if (file_exists($path))
unlink($path);
}
Для того чтобы сделать ее более универсальной не хватает одного момента - функция каждый раз обращается к определенному свойству объекта, название этой переменной может меняться. Как сделать так чтобы он обращался к свойству допустим $this->photo_image а у нас везде $this->image. Кто то может сказать что ты можешь передать туда переменную, $this->photo_image. Но будет намного удобней если название свойства будет храниться в настройках, чем при каждом действии ее вспоминать и передавать в функцию в качестве параметра.