Есть условно некая форма твоара, с набором разных полей + какой-нибудь файл.
Метод "обновления" товара выглядит так
Код: Выделить всё
public function actionUpdate($id)
{
if(Yii::$app->request->isPost)
{
$fd = Yii::$app->request->post('FD');
$fd['approve'] = isset($fd['approve']) ? 1 : 0;
$fd['is_new'] = isset($fd['is_new']) ? 1 : 0;
$fd['is_rec'] = isset($fd['is_rec']) ? 1 : 0;
$row = Products::findOne($id);
$row->attributes = $fd;
$row->update();
if( $file = UploadedFile::getInstanceByName('image') )
{
$filenameT = Useful::genName($file->getBaseName()).$file->getExtension();
$filenameO = Useful::genName($file->getBaseName()).$file->getExtension();
$pathT = Yii::getAlias('@uploads/').$filenameT;
$pathO = Yii::getAlias('@uploads/').$filenameO;
$file->saveAs($pathT, FALSE);
$file->saveAs($pathO);
$img = new SimpleImage($pathT);
$img->thumbnail(150)->save($pathT);
$img = new SimpleImage($pathO);
$img->best_fit(1280, 1280)->save($pathO);
Products::updateAll(['thumb' => $filenameT, 'image' => $filenameO], ['id' => $id]);
}
return $this->redirect(Url::to(['index']));
}
return $this->render('edit', [
'row' => Products::findOne($id),
'categories' => Categories::getFullTree(),
]);
}
загрузку файла, как лучше сделать? Статический метод? Или поведение? Или как?
вот эта часть:
Код: Выделить всё
if( $file = UploadedFile::getInstanceByName('image') )
{
$filenameT = Useful::genName($file->getBaseName()).$file->getExtension();
$filenameO = Useful::genName($file->getBaseName()).$file->getExtension();
$pathT = Yii::getAlias('@uploads/').$filenameT;
$pathO = Yii::getAlias('@uploads/').$filenameO;
$file->saveAs($pathT, FALSE);
$file->saveAs($pathO);
$img = new SimpleImage($pathT);
$img->thumbnail(150)->save($pathT);
$img = new SimpleImage($pathO);
$img->best_fit(1280, 1280)->save($pathO);
Products::updateAll(['thumb' => $filenameT, 'image' => $filenameO], ['id' => $id]);
}