我想在Symfony 1.4中用一个动作创建200多个对象的缩略图。问题是缩略图生成发生在保存表单时。
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();
}
如果您在托管计划(而不是您的开发机器)上运行它,可能会有内存问题。获得缩略图的更好方法是使用像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);
}