0

解析 XML 提要并以这种方式保存:

$action = new CouponActionForm();
$values = array(
      'name' => $offer->name,
      'link' => $offer->url,
      'description' => $offer->description,
      'discount' => $offer->discount,
      'price' => $offer->price
);
$files = $this->getImages($offer->picture);
if(!$action->bindAndSave($values, $files)){
      echo $action->renderGlobalErrors();
      die('BAD THING');
}

这是getImages方法:

private function getImages($url){
  $ret = array('error' => 0);
  $tmp_dir = sys_get_temp_dir();
  $tmp_file = tempnam($tmp_dir, 'kupon');
  if(copy($url, $tmp_file)){
      $ret['tmp_name'] = $tmp_file;
      $ret['name'] = basename($url);
      $ret['size'] = filesize($tmp_file);
      $ret['type'] = 'image/jpeg';
      return array('filename' => $ret);
  }else{
      die('HELP');
  }
}

为什么我使用表单保存而不是使用->fromArray方法保存对象?好吧,我已经完成了表单和所有验证,所以我不想两次实现相同的东西(DRY),但同样重要的是,我实际上不知道如何在学说模型中使用验证器。所以问题是表单没有将文件保存在validatorpath属性指定的特定目录中sfValidatorFile,而是存在于tmp目录中。

4

0 回答 0