十月 CMS - DynamicPDF 插件失败
October CMS - DynamicPDF plugin fails
我安装了 Renatio 的 DynamicPDF 插件以生成 PDF 作为附件
在电子邮件中。
但是我无法让它工作。
use Renatio\DynamicPDF\Classes\PDF; // import facade
...
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate('renatio::invoice')->save($temp_file);
Mail::send('acme.blog::mail.welcome', $data, function ($message) {
$message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
});
我一直收到同样的错误
No query results for model [Renatio\DynamicPDF\Models\Template]
有人可以帮助我吗?
更新 // 这是我的代码
<?php namespace Codalia\Membership\Helpers;
use October\Rain\Support\Traits\Singleton;
use Renatio\DynamicPDF\Classes\PDF; // import facade
use Codalia\Membership\Models\Member;
...
class EmailHelper
{
use Singleton;
...
public function payment($recordId, $data)
{
$member = Member::find($recordId);
$vars = ['first_name' => $member->first_name,
'last_name' => $member->last_name,
'amount' => $data['amount'],
'item' => $data['item'],
'payment_mode' => $data['mode'],
];
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate('renatio::invoice-membership', $vars)->save($temp_file);
Mail::send('codalia.membership::mail.payment_email, $vars, function($message) use($member, $temp_file) {
$message->to($member->email, 'Admin System');
$message->subject(Lang::get('codalia.membership::lang.email.payment_subject));
$message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
});
}
...
}
您需要将 $temp_file 传递给函数才能使用它
Mail::send('acme.blog::mail.welcome', $data, function ($message) use($temp_file) {
$message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
});
编辑:
我为我的网站添加了相同的需求。
所以我在我的插件中创建了一个 class 来生成发票、凭证或门票的 PDF,它似乎和你一样。
<?php namespace LucasPalomba\Tranfers\Classes;
use Flash;
use Request;
use LucasPalomba\Tranfers\Models\Settings;
use Carbon\Carbon;
use Renatio\DynamicPDF\Classes\PDF;
class GeneratePDF {
...
public static function invoice($dossier) {
$price_without_taxes = number_format( ($dossier->prix_a_regler * 100 / 110) ,'2');
$PDF = [
'nom' => $dossier->client->nom,
'prenom' => $dossier->client->prenom,
'adresse' => $dossier->client->adresse,
'code_postal' => $dossier->client->code_postal,
'ville' => $dossier->client->ville,
'email' => $dossier->client->email,
'reference' => $dossier->reference,
'price_without_taxes' => $price_without_taxes,
'vat_amount' => $dossier->prix_a_regler - $price_without_taxes,
'prix_a_regler' => $dossier->prix_a_regler
];
$invoice = (strtolower($dossier->client->langue_site) == 'fr')? 'renatio::invoice_fr': 'renatio::invoice' ;
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate($invoice, (array)$PDF)
->save($temp_file);
$filename = 'invoice-' . trim($dossier->reference);
$output = PDF::loadTemplate($invoice, (array)$PDF)->output();
$filepath = temp_path() . '/' . $filename . '.pdf';
\File::put( $filepath, $output);
$file = new \System\Models\File;
$file->data = $filepath;
$file->is_public = true;
$file->save();
$dossier->pdf()->add($file);
return $temp_file;
}
然后在我的插件中,我像这样调用 class 来获取 PDF 并将其附加到邮件中:
...
$invoice = GeneratePDF::invoice($dossier);
Mail::send('lucaspalomba.tranfers::mail.'.$view , $vars , function($message) use ($dossier, $invoice){
$message->attach($quote , ['as' => 'Your_Quote.pdf']);
$message->to($dossier->client->email); //#0003
});
...
您确定已在后台创建模板 renatio::invoice-membership
吗?
最佳,
好的,我知道了。
$vars = ['amount' => 1.00, 'item' => 'stuff'];
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate('invoice-membership', $vars)->save($temp_file);
renatio::
部分在这里没有用,因为它将模板称为文件(即:PDF 视图)。由于我在后台创建模板(即:PDF 模板),所有数据都存储在数据库中。
但我不得不说官方文档对这一点的记录很差。
他们应该更具体地说明如何使用 PDF 模板的方法。
我安装了 Renatio 的 DynamicPDF 插件以生成 PDF 作为附件
在电子邮件中。
但是我无法让它工作。
use Renatio\DynamicPDF\Classes\PDF; // import facade
...
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate('renatio::invoice')->save($temp_file);
Mail::send('acme.blog::mail.welcome', $data, function ($message) {
$message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
});
我一直收到同样的错误
No query results for model [Renatio\DynamicPDF\Models\Template]
有人可以帮助我吗?
更新 // 这是我的代码
<?php namespace Codalia\Membership\Helpers;
use October\Rain\Support\Traits\Singleton;
use Renatio\DynamicPDF\Classes\PDF; // import facade
use Codalia\Membership\Models\Member;
...
class EmailHelper
{
use Singleton;
...
public function payment($recordId, $data)
{
$member = Member::find($recordId);
$vars = ['first_name' => $member->first_name,
'last_name' => $member->last_name,
'amount' => $data['amount'],
'item' => $data['item'],
'payment_mode' => $data['mode'],
];
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate('renatio::invoice-membership', $vars)->save($temp_file);
Mail::send('codalia.membership::mail.payment_email, $vars, function($message) use($member, $temp_file) {
$message->to($member->email, 'Admin System');
$message->subject(Lang::get('codalia.membership::lang.email.payment_subject));
$message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
});
}
...
}
您需要将 $temp_file 传递给函数才能使用它
Mail::send('acme.blog::mail.welcome', $data, function ($message) use($temp_file) {
$message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
});
编辑: 我为我的网站添加了相同的需求。 所以我在我的插件中创建了一个 class 来生成发票、凭证或门票的 PDF,它似乎和你一样。
<?php namespace LucasPalomba\Tranfers\Classes;
use Flash;
use Request;
use LucasPalomba\Tranfers\Models\Settings;
use Carbon\Carbon;
use Renatio\DynamicPDF\Classes\PDF;
class GeneratePDF {
...
public static function invoice($dossier) {
$price_without_taxes = number_format( ($dossier->prix_a_regler * 100 / 110) ,'2');
$PDF = [
'nom' => $dossier->client->nom,
'prenom' => $dossier->client->prenom,
'adresse' => $dossier->client->adresse,
'code_postal' => $dossier->client->code_postal,
'ville' => $dossier->client->ville,
'email' => $dossier->client->email,
'reference' => $dossier->reference,
'price_without_taxes' => $price_without_taxes,
'vat_amount' => $dossier->prix_a_regler - $price_without_taxes,
'prix_a_regler' => $dossier->prix_a_regler
];
$invoice = (strtolower($dossier->client->langue_site) == 'fr')? 'renatio::invoice_fr': 'renatio::invoice' ;
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate($invoice, (array)$PDF)
->save($temp_file);
$filename = 'invoice-' . trim($dossier->reference);
$output = PDF::loadTemplate($invoice, (array)$PDF)->output();
$filepath = temp_path() . '/' . $filename . '.pdf';
\File::put( $filepath, $output);
$file = new \System\Models\File;
$file->data = $filepath;
$file->is_public = true;
$file->save();
$dossier->pdf()->add($file);
return $temp_file;
}
然后在我的插件中,我像这样调用 class 来获取 PDF 并将其附加到邮件中:
...
$invoice = GeneratePDF::invoice($dossier);
Mail::send('lucaspalomba.tranfers::mail.'.$view , $vars , function($message) use ($dossier, $invoice){
$message->attach($quote , ['as' => 'Your_Quote.pdf']);
$message->to($dossier->client->email); //#0003
});
...
您确定已在后台创建模板 renatio::invoice-membership
吗?
最佳,
好的,我知道了。
$vars = ['amount' => 1.00, 'item' => 'stuff'];
$temp_file = tempnam(sys_get_temp_dir(), 'inv');
PDF::loadTemplate('invoice-membership', $vars)->save($temp_file);
renatio::
部分在这里没有用,因为它将模板称为文件(即:PDF 视图)。由于我在后台创建模板(即:PDF 模板),所有数据都存储在数据库中。
但我不得不说官方文档对这一点的记录很差。
他们应该更具体地说明如何使用 PDF 模板的方法。