Php Symfony 1.4保存所有项目';一个动作的froms

Php Symfony 1.4保存所有项目';一个动作的froms,php,forms,symfony1,Php,Forms,Symfony1,我想在Symfony 1.4中用一个动作为200多个对象创建缩略图。问题是在保存表单时会生成ThmbMail class AuthorForm extends BaseAuthorForm { public function configure() { /* some configs */ } public function save($con = null) { /* create thmbnail from original picture

我想在Symfony 1.4中用一个动作为200多个对象创建缩略图。问题是在保存表单时会生成ThmbMail

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

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

}
我如何编写一个(批处理)操作来一次性保存它们,而不是转到后端的每个项目并保存它们

请注意,只需$author->save();当然不行


谢谢

您必须获取对象、循环它们、创建表单并保存。像下面这样

$authors = Doctrine_Core::getTable('Author')->findAll();
foreach($authors as $author){
    $form = new AuthorForm($author);
    $form->save();
}
$authors = Doctrine_Core::getTable('Author')->findAll();
foreach($authors as $author){
    $form = new AuthorForm($author);
    $form->save();
    unset($form, $author);
}
如果在托管计划(而不是开发机器)上运行它,可能会出现内存问题。获取缩略图的更好方法是使用类似sfImageTransformExtraPlugin的插件(http://www.symfony-project.org/plugins/sfImageTransformExtraPlugin)根据需要生成缓存的缩略图。您甚至不需要经历生成缩略图的麻烦。而且仍然可以很容易地拥有同一张照片的多个缩略图版本

如果您仍然需要使用这种方式,请在循环过程中执行一些未设置的操作,如下所示

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

创建表单、将对象绑定到表单然后保存表单不起作用?