【问题标题】:yii2 ~ Generate PDF from viewyii2 ~ 从视图生成 PDF
【发布时间】:2017-09-12 11:37:52
【问题描述】:

我正在尝试使用 mPDF 生成我的视图的 PDF。但是当我尝试使用模型的属性时它不起作用我做错了什么?

class FacturenController extends Controller
{

    public function actionMpdfDemo1() {
        $content = $this->renderPartial('factuur');
        $pdf = new Pdf([
            'mode' => Pdf::MODE_UTF8, // leaner size using standard fonts
            'content' => $content,
            'options' => [
                'title' => 'Factuur',
                'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
            ],
            'methods' => [
                'SetHeader' => ['Generated By: Krajee Pdf Component||Generated On: ' . date("r")],
                'SetFooter' => ['|Page {PAGENO}|'],
            ]
        ]);
        return $pdf->render();
    }

PDF 是通过一个名为“factuur.php”的文件生成的,我正在尝试使用“company_name”“factuur_id”等查看项目 另外,是否可以使用像 'Factuur' 这样的标题。 'factuur_id'?

<?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'factuur_id',
            'company.company_name',
            'person.Contactpersoon',
//          'person.last_name',
            'product.product_id',
            'product.product_name',
            'product.amount',
            'product.price',
            'date',
        ],
    ]) ?>

    <?php

use yii\helpers\Html;
use yii\widgets\DetailView;
use app\models\Facturen;
use helpers\ArrayHelper;
use app\models\Producten;
use app\controllers\FacturenController;
/* @var $this yii\web\View */
/* @var $model app\models\Facturen */
/* @var $modelProducten app\models\Producten */

$this->title = 'Factuur: '. $model->factuur_id; ?>
<div class="container">
    <div class="row">
        <div class="col-xs-12">
            <div class="invoice-title">
                <h2><?php $this->title; ?></h2><h3 class="pull-right">Factuurnummer # <?php 'factuur_id' ?></h3>
            </div>
            <hr>
            <div class="row">
                <div class="col-xs-6">
                    <address>
                        <strong>Bedrijsnaam: </strong><?php 'company.company_name' ?><br>
                        <strong>Contactpersoon: </strong><?php'person.Contactpersoon'?><br>
                         <.../>

如果您想了解其他信息或查看图片,请联系我

~~~~~~编辑~~~~~~

使用我得到的一些cmets后,我有一个新的“错误”

错误请求 (#400) 缺少必需的参数:id

我认为这与这段代码有关

类 FacturenController 扩展控制器 {

public function actionMpdfDemo1($id) {
  $model = Facturen::findOne($id);
    $content = $this->renderPartial('factuur', [
        'model' => $model,
        'company' => $company,
    ]);

你们也应该知道我以前从未使用过框架,所以我是个菜鸟

【问题讨论】:

    标签: php yii yii2 mpdf yii2-basic-app


    【解决方案1】:

    如果您希望您的视图文件提供动态内容,您可以使用与使用 render() 相同的方式将变量传递给它:

        $content = $this->renderPartial('factuur', [
                     'model' => $model,
                     'company' => $company,
                     'person' => $person,
                     // etc...
                     ]);
    



    编辑 [2017 年 9 月 13 日]

    为方便起见,我将向您展示整个控制器操作和视图代码。您需要借助 Gii 从数据库表中生成模型。

    示例

    控制器代码

        public function actionMpdfDemo1($id) {
            $model = \app\models\Dealer::findOne($id);
            $content = $this->renderPartial('_pdf-dealer', [
                         'model' => $model,
                         // etc...
                         ]);
            $pdf = new \kartik\mpdf\Pdf([
                'mode' => \kartik\mpdf\Pdf::MODE_UTF8, // leaner size using standard fonts
                'content' => $content,
            'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
            'cssInline' => '.kv-heading-1{font-size:18px}',
                'options' => [
                    'title' => 'Factuur',
                    'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
                ],
                'methods' => [
                    'SetHeader' => ['Generated By: Krajee Pdf Component||Generated On: ' . date("r")],
                    'SetFooter' => ['|Page {PAGENO}|'],
                ]
            ]);
            return $pdf->render();
        }
    

    查看:_pdf-dealer.php

    <?php
    use yii\helpers\Html;
    
    ?>
    
    <div class="pdf-dealer container">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>ID</td>
                    <th>Name</td>
                    <th>Address</td>
                    <th>Phone</td>
                    <th>District</td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><?= $model->id ?></td>
                    <td><?= $model->name ?></td>
                    <td><?= $model->address ?></td>
                    <td><?= $model->phone ?></td>
                    <td><?= $model->district ?></td>
                </tr>
            </tbody>
        </table>
    </div>
    

    然后通过类似于以下的路径生成 PDF 文件: http://example.com/your-controller/mpdf-demo1?id=1

    【讨论】:

    • 我收到一个错误,未定义的变量:模型。我做错了什么?
    • 我会全程帮助你,但我相信最好还是让你自己解决。提示:public function actionMpdfDemo1($id)
    • 好的,现在我收到一个错误网页,这与我遇到的其他错误不同,所以这是新的“错误请求 (#400) 缺少必需参数:id”
    • 我已经用一个例子更新了答案。请阅读 yii2 文档以更好地了解其工作原理
    • 感谢一百万,它已修复
    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多