Symfony 1.4 сохраняет все предметы одним действием - PullRequest
0 голосов
/ 27 сентября 2011

Я хочу создавать эскизы для 200+ объектов одним действием в Symfony 1.4. Проблема в том, что генерация миниатюр происходит при сохранении формы.

class AuthorForm extends BaseAuthorForm
{
  public function configure()
  {
    /* some configs */
  }

  public function save($con = null)
  {      
    /* create thmbnail from original picture */ 
  }

}

Как я могу написать (пакетное) действие, чтобы иметь возможность сохранять их все сразу, а не переходить к каждому элементу в бэкэнде и сохранять?

Обратите внимание, что просто $ author-> save (); не сработает, конечно.

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2011

Вы должны выбрать объекты, пройтись по ним, создать форму и сохранить. Как следующее.

$authors = Doctrine_Core::getTable('Author')->findAll();
foreach($authors as $author){
    $form = new AuthorForm($author);
    $form->save();
}

Вероятно, у вас будут проблемы с памятью, если вы запускаете его на хостинг-плане (а не на своем компьютере разработчика). Лучший способ получить миниатюры - использовать плагин, такой как sfImageTransformExtraPlugin (http://www.symfony -project.org / plugins / sfImageTransformExtraPlugin), который генерирует кэшированные миниатюры по мере необходимости. Вам даже не нужно проходить через задачу создания миниатюр. И, тем не менее, довольно легко может иметь несколько уменьшенных версий одной и той же фотографии.

Если вам все еще нужно использовать этот способ, сделайте несколько неустановленных вещей во время цикла, например, следующее.

$authors = Doctrine_Core::getTable('Author')->findAll();
foreach($authors as $author){
    $form = new AuthorForm($author);
    $form->save();
    unset($form, $author);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...