Как оптимизировать обработку изображений в Symfony по модели - PullRequest
0 голосов
/ 01 февраля 2010

Предположим модель Доктрины Profile:

# This is example of my schema.yml
Profile:
 columns:
   avatar:
     type: string(255)
     notnull: true

Моя цель - создать аватар профиля из загруженного файла:

class Avatar extends BaseAvatar{
  public function postSave($e){
    if($this->getAvatar()){
      // resize/crop it to 100x100
      // and save
    }
}

Эта логика мне подходит. Но моя Profile связанная запись обновляется при каждом запросе с некоторой дополнительной информацией. И, как вы можете видеть, файл аватара генерируется снова и снова, несмотря на то, что поле avatar может оставаться неизменным.

Вопрос: Как среда может определить, обновляется ли конкретное поле или нет?

Примечание: Мне не нужно обновлять действия Symfony из-за повторения кода в нескольких приложениях Или может мне нужно?

1 Ответ

0 голосов
/ 01 февраля 2010

Если вы используете форму для визуализации полей редактирования профиля, я бы предложил перенести туда код изменения размера, переопределив метод saveFile, который вы унаследовали от sfFormDoctrine:

protected function saveFile($field, $filename = null, sfValidatedFile $file = null)
{
  $finalFilename = parent::saveFile($field, $filename, $file);
  if($field == 'avatar')
  {
    // generate thumbnail from $finalFilename
  }
}

Это будет вызвано при вызове метода save () в вашей форме. Надеюсь, это поможет.

...