Оптимизация кода

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

Nerf писал(а):

Код: Выделить всё

$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);
$pathT != $pathO?
Зачем сохранять файлы с последующим переписыванием?
Потому что это созданию превью
Последний раз редактировалось jakiro 2016.04.13, 09:22, всего редактировалось 4 раза.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

zelenin писал(а):
jakiro писал(а):
zelenin писал(а): а, ок. в yii-шной реализации для чекбокса его предваряет скрытый инпут, который всегда оптравляется https://github.com/yiisoft/yii2/blob/ma ... l.php#L739
то есть вы столкнетесь с такой проблемой, если чекбокс рисуете руками.
Ну и использование Html хелпера не ограничивает в плане верстки.
Не знал, что чекбокс хелпера будет отправлять и не отмеченный чекбокс тоже. Впервые понадобился хелпер
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Оптимизация кода

Сообщение maleks »

jakiro писал(а): Не знал, что чекбокс хелпера будет отправлять и не отмеченный чекбокс тоже. Впервые понадобился хелпер
Фреймворк это обеспечил, т.к. в случае с чекбоксом, пустой выбор - тоже выбор. Для файлов то же делается это.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Оптимизация кода

Сообщение S c »

zelenin писал(а):ActiveForm - да, сложен в настройке.
Да ну. раз попробовать, понять, и далее с закрытыми глазами. Как по мне - так очень даже удобен.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

S c писал(а):
zelenin писал(а):ActiveForm - да, сложен в настройке.
Да ну. раз попробовать, понять, и далее с закрытыми глазами. Как по мне - так очень даже удобен.
Там верстальщик ковыряется часто в шаблонах, поэтому он в диком ужасе будет (
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Оптимизация кода

Сообщение maleks »

пока что в диком ужасе мы. Использовать модели yii и при этом не отображать их как положено, исключая тем самым даже ту же js валидацию...
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Оптимизация кода

Сообщение S c »

maleks писал(а):пока что в диком ужасе мы. Использовать модели yii и при этом не отображать их как положено, исключая тем самым даже ту же js валидацию...
на самом деле это рабочий вариант. Многие отвязываются от activeform, ничего тут страшного нет. Хотя, конечно, имена input-ам могли бы дать yii-шные ))

Клиентскую валидацию можно даже (в крайнем случае) оставить ajax-овую. Запилить чтоб она работала корректно с чистым html-ом - час работы.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

столько трепу и ничего по делу russian community
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Оптимизация кода

Сообщение maleks »

jakiro писал(а):столько трепу и ничего по делу
что, совет перенести тот код в модель - это не по делу?
Yii2 universal module sceleton - for basic and advanced templates
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Оптимизация кода

Сообщение Nerf »

maleks писал(а):
Nerf писал(а): Почему? Вы получите те данные, которые загрузили. load() не пробовали?
Он не использует формы с yii инпутами, поэтому даже ничего не именовано.
:shock:
$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); 
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

Nerf писал(а): Смысл сохранять временный файл дважды. Потом сохраненное перезаписывать?
Я уже ответил на этот вопрос выше.
Напишу еще раз: это превью
и зачем вы изменили код?
Последний раз редактировалось jakiro 2016.04.13, 16:09, всего редактировалось 1 раз.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

И там нет никакого $tmpPath, зачем вы одинаковый путь передаете, я не знаю.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Оптимизация кода

Сообщение Nerf »

jakiro писал(а):И там нет никакого $tmpPath, зачем вы одинаковый путь передаете, я не знаю.
У вас картинка при загрузке помещается во временную папку. $tmpPath - это путь до нее. Я вам предлагаю не перезаписывать файлы, а открыть картинку по этому пути и сохранить версии. Код привел.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

Nerf писал(а):
jakiro писал(а):И там нет никакого $tmpPath, зачем вы одинаковый путь передаете, я не знаю.
У вас картинка при загрузке помещается во временную папку. $tmpPath - это путь до нее. Я вам предлагаю не перезаписывать файлы, а открыть картинку по этому пути и сохранить версии. Код привел.
емае, там же две разные картинки, большая и маленькая с разными пропорциями
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Оптимизация кода

Сообщение Nerf »

jakiro писал(а):емае, там же две разные картинки, большая и маленькая с разными пропорциями
Вы какой-то неадекват... Две разные там у вас($file = UploadedFile::getInstanceByName('image'))... Пишите дальше как хотите.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

Nerf писал(а):
jakiro писал(а):емае, там же две разные картинки, большая и маленькая с разными пропорциями
Вы какой-то неадекват... Две разные там у вас($file = UploadedFile::getInstanceByName('image'))... Пишите дальше как хотите.
Где вторая?

Код: Выделить всё

  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(),
    ]);
  }
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Оптимизация кода

Сообщение zelenin »

что у вас в Useful::genName?
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Оптимизация кода

Сообщение jakiro »

zelenin писал(а):что у вас в Useful::genName?
генерация рандомного имени
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Оптимизация кода

Сообщение Nerf »

Где вторая?
:mrgreen:
Вы понимаете, что открываете ОДИН файл, потом сохраняете его в виде ДВУХ файлов(удаляя временный). Потом открываете эти ДВА файла и потом перезаписываете их своими ДВУМЯ версиями?)
На "огурцах" объясню:

Код: Выделить всё

$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);
    
    // ...
} 
Когда у вас будет 10 версий, вы будете писать сохранять файл 10 раз и потом его 10 раз перезаписывать?)
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Оптимизация кода

Сообщение maleks »

Nerf писал(а):
maleks писал(а):
Nerf писал(а): Почему? Вы получите те данные, которые загрузили. load() не пробовали?
Он не использует формы с yii инпутами, поэтому даже ничего не именовано.
:shock:
$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;
Инициализация входных данных вручную, как в чистом пхп, необходимая в данном случае, повторять сто раз что выше уже было обсмокчено нет смысла.
Yii2 universal module sceleton - for basic and advanced templates
Ответить