嗨,cakephp 中的 File::write() 有一个奇怪的问题。
我编写此代码以生成 pdf 视图并将其保存在文件中。
private function generate( $id ){
$order = $this->Order->read( null, $id );
$this->set('order', $order);
$view = new View($this);
$viewdata = $view->render('pdf');
//set the file name to save the View's output
$path = WWW_ROOT . 'ordini/' . $id . '.pdf';
$file = new File($path, true);
//write the content to the file
$file->write( $viewdata );
//return the path
return $path;
}
我需要生成这个 pdf 并将其作为附件发送,所以这是我的代码
public function publish ($id) {
$pdf_file = $this->generate( (int)$id );
$Email = new CakeEmail();
$Email->from(array('info@.....com' => '......'));
$Email->to('....@gmail.com');
$Email->subject('Nuovo ordine');
$filepath = WWW_ROOT . 'ordini/' . $id . '.pdf';
$Email->attachments(array('Ordine.pdf' => $filepath));
$Email->send('......');
}
我第一次运行此代码时,电子邮件不起作用,只有当文件夹中已经有 pdf 时,电子邮件才能正常工作。
我认为 File::write 执行某种异步写入,当系统执行 Email::attachments 时,文件还没有准备好。
如何在此代码中插入 while() 以检查文件可用性?
多谢。