Потому что это созданию превьюNerf писал(а):$pathT != $pathO?Код: Выделить всё
$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);
Зачем сохранять файлы с последующим переписыванием?
Оптимизация кода
Re: Оптимизация кода
Последний раз редактировалось jakiro 2016.04.13, 09:22, всего редактировалось 4 раза.
Re: Оптимизация кода
Не знал, что чекбокс хелпера будет отправлять и не отмеченный чекбокс тоже. Впервые понадобился хелперzelenin писал(а):jakiro писал(а):Ну и использование Html хелпера не ограничивает в плане верстки.zelenin писал(а): а, ок. в yii-шной реализации для чекбокса его предваряет скрытый инпут, который всегда оптравляется https://github.com/yiisoft/yii2/blob/ma ... l.php#L739
то есть вы столкнетесь с такой проблемой, если чекбокс рисуете руками.
Re: Оптимизация кода
Фреймворк это обеспечил, т.к. в случае с чекбоксом, пустой выбор - тоже выбор. Для файлов то же делается это.jakiro писал(а): Не знал, что чекбокс хелпера будет отправлять и не отмеченный чекбокс тоже. Впервые понадобился хелпер
Re: Оптимизация кода
Да ну. раз попробовать, понять, и далее с закрытыми глазами. Как по мне - так очень даже удобен.zelenin писал(а):ActiveForm - да, сложен в настройке.
Re: Оптимизация кода
Там верстальщик ковыряется часто в шаблонах, поэтому он в диком ужасе будет (S c писал(а):Да ну. раз попробовать, понять, и далее с закрытыми глазами. Как по мне - так очень даже удобен.zelenin писал(а):ActiveForm - да, сложен в настройке.
Re: Оптимизация кода
пока что в диком ужасе мы. Использовать модели yii и при этом не отображать их как положено, исключая тем самым даже ту же js валидацию...
Re: Оптимизация кода
на самом деле это рабочий вариант. Многие отвязываются от activeform, ничего тут страшного нет. Хотя, конечно, имена input-ам могли бы дать yii-шные ))maleks писал(а):пока что в диком ужасе мы. Использовать модели yii и при этом не отображать их как положено, исключая тем самым даже ту же js валидацию...
Клиентскую валидацию можно даже (в крайнем случае) оставить ajax-овую. Запилить чтоб она работала корректно с чистым html-ом - час работы.
Re: Оптимизация кода
столько трепу и ничего по делу russian community
Re: Оптимизация кода
что, совет перенести тот код в модель - это не по делу?jakiro писал(а):столько трепу и ничего по делу
Re: Оптимизация кода
maleks писал(а):Он не использует формы с yii инпутами, поэтому даже ничего не именовано.Nerf писал(а): Почему? Вы получите те данные, которые загрузили. load() не пробовали?
$fd = Yii::$app->request->post('FD');
$row->attributes = $fd;
Уверены?
Смысл сохранять временный файл дважды. Потом сохраненное перезаписывать?Потому что это созданию превьюКод: Выделить всё
$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);
Код: Выделить всё
$img = new SimpleImage($tmpPath);
$img->thumbnail(150)->save($pathT);
$img = new SimpleImage($tmpPath);
$img->best_fit(1280, 1280)->save($pathO);
Re: Оптимизация кода
Я уже ответил на этот вопрос выше.Nerf писал(а): Смысл сохранять временный файл дважды. Потом сохраненное перезаписывать?
Напишу еще раз: это превью
и зачем вы изменили код?
Последний раз редактировалось jakiro 2016.04.13, 16:09, всего редактировалось 1 раз.
Re: Оптимизация кода
И там нет никакого $tmpPath, зачем вы одинаковый путь передаете, я не знаю.
Re: Оптимизация кода
У вас картинка при загрузке помещается во временную папку. $tmpPath - это путь до нее. Я вам предлагаю не перезаписывать файлы, а открыть картинку по этому пути и сохранить версии. Код привел.jakiro писал(а):И там нет никакого $tmpPath, зачем вы одинаковый путь передаете, я не знаю.
Re: Оптимизация кода
емае, там же две разные картинки, большая и маленькая с разными пропорциямиNerf писал(а):У вас картинка при загрузке помещается во временную папку. $tmpPath - это путь до нее. Я вам предлагаю не перезаписывать файлы, а открыть картинку по этому пути и сохранить версии. Код привел.jakiro писал(а):И там нет никакого $tmpPath, зачем вы одинаковый путь передаете, я не знаю.
Re: Оптимизация кода
Вы какой-то неадекват... Две разные там у вас($file = UploadedFile::getInstanceByName('image'))... Пишите дальше как хотите.jakiro писал(а):емае, там же две разные картинки, большая и маленькая с разными пропорциями
Re: Оптимизация кода
Где вторая?Nerf писал(а):Вы какой-то неадекват... Две разные там у вас($file = UploadedFile::getInstanceByName('image'))... Пишите дальше как хотите.jakiro писал(а):емае, там же две разные картинки, большая и маленькая с разными пропорциями
Код: Выделить всё
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(),
]);
}
Re: Оптимизация кода
что у вас в Useful::genName?
Re: Оптимизация кода
генерация рандомного имениzelenin писал(а):что у вас в Useful::genName?
Re: Оптимизация кода
Где вторая?
Вы понимаете, что открываете ОДИН файл, потом сохраняете его в виде ДВУХ файлов(удаляя временный). Потом открываете эти ДВА файла и потом перезаписываете их своими ДВУМЯ версиями?)
На "огурцах" объясню:
Код: Выделить всё
$uploadedFile = UploadedFile::getInstanceByName('image');
if($uploadedFile) {
$filenameT = Useful::genName($file->getBaseName()) . $file->getExtension();
$filenameO = Useful::genName($file->getBaseName()) . $file->getExtension();
$pathT = Yii::getAlias('@uploads/') . $filenameT;
$pathO = Yii::getAlias('@uploads/') . $filenameO;
$img = new SimpleImage($uploadedFile->tempName);
$img->thumbnail(150)->save($pathT);
$img = new SimpleImage($uploadedFile->tempName);
$img->best_fit(1280, 1280)->save($pathO);
// ...
}
Re: Оптимизация кода
Вы почему то пропустили эти строчки:Nerf писал(а):maleks писал(а):Он не использует формы с yii инпутами, поэтому даже ничего не именовано.Nerf писал(а): Почему? Вы получите те данные, которые загрузили. load() не пробовали?
$fd = Yii::$app->request->post('FD');
$row->attributes = $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;