こんにちは、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() を挿入して、ファイルの可用性を確認するにはどうすればよいですか?
どうもありがとう。