首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十月CMS - DynamicPDF插件失败

十月CMS - DynamicPDF插件失败
EN

Stack Overflow用户
提问于 2020-11-25 13:51:34
回答 2查看 313关注 0票数 0

我已经安装了DynamicPDf插件由雷纳修,以生成PDF作为附件在电子邮件。

但我不能让它起作用。

代码语言:javascript
复制
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']);
});

我总是犯同样的错误

没有查询模型Renatio\DynamicPDF\ model \模板的结果

有人能帮我吗?

更新//这是我的代码

代码语言:javascript
复制
<?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']);
        });
      }

   ...

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-26 07:23:43

好的我知道了。

代码语言:javascript
复制
    $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模板的方法。

票数 1
EN

Stack Overflow用户

发布于 2020-11-25 14:07:42

您需要将$temp_file传递给函数才能使用它。

代码语言:javascript
复制
    Mail::send('acme.blog::mail.welcome', $data, function ($message) use($temp_file) {
        $message->attach($temp_file, ['as' => 'Your_Invoice.pdf']);
    });

编辑:我增加了对我的网站的同样需要。因此,我在插件中创建了一个类,用于生成发票、凭证或票证的PDF,它似乎与您相同。

代码语言:javascript
复制
    <?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;
    
    
        }

然后在我的插件中,我像这样调用类来获取PDF并将其附加到邮件中:

代码语言:javascript
复制
    ...
    $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吗?

最好的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65006051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档