تالار گفتمان nCIS.ir

نسخه‌ی کامل: دلیل خطای Class 'kartik\mpdf\Pdf' not found چیست؟ (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.

با دستور زیر kartikmpdfPdf رو برای yii2 نصب کردم:

composer require kartik-v/yii2-mpdf "dev-master"

با دستور زیر آن را معرفی کرده ام:

use kartikmpdfPdf;

و در متد زیر از آن استفاده کرده ام:

public function actionReport() {
   // get your HTML raw content without any layouts or scripts
   $content = $this->renderPartial('_reportView');

   // setup kartikmpdfPdf component
   $pdf = new Pdf([
       // set to use core fonts only
       'mode' => Pdf::MODE_CORE, 
       // A4 paper format
       'format' => Pdf::FORMAT_A4, 
       // portrait orientation
       'orientation' => Pdf::ORIENT_PORTRAIT, 
       // stream to browser inline
       'destination' => Pdf::DEST_BROWSER, 
       // your html content input
       'content' => $content,  
       // format content from your own css file if needed or use the
       // enhanced bootstrap css built by Krajee for mPDF formatting 
       'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
       // any css to be embedded if required
       'cssInline' => '.kv-heading-1{font-size:18px}', 
        // set mPDF properties on the fly
       'options' => ['title' => 'Krajee Report Title'],
        // call mPDF methods on the fly
       'methods' => [ 
           'SetHeader'=>['Krajee Report Header'], 
           'SetFooter'=>['{PAGENO}'],
       ]
   ]);

    // http response
    $response = Yii::$app->response;
    $response->format = yiiwebResponse::FORMAT_RAW;
   $headers = Yii::$app->response->headers;
   $headers->add('Content-Type', 'application/pdf');

   // return the pdf output as per the destination setting
   return $pdf->render(); 
}

همه اینها را طبق آموزش انجام دادم ولی خطای زیرو میگیرم:

Class 'kartikmpdfPdf' not found

کلاس Pdf که نصب شده، پس چرا خطا میده؟

لطفا راهنمایی کنید.

متشکرم.
ببینید توی فایل خودش، فضای نام همینطوری تعریف شده یا چیز دیگه است؟
کلاس Pdf از فضای نام زیر استفاده کرده:

namespace kartikmpdf;

میشه برا یه اکشن خاص فضای نام منحصر به فردی تعیین کرد؟
چرا موقع اجرا use kartikmpdfPdf کار نمیکنه؟
داخل components تعریفش کنید

    'pdf' => [
        'class' => Pdf::classname(),
        'format' => Pdf::FORMAT_A4,
        'orientation' => Pdf::ORIENT_PORTRAIT,
        'destination' => Pdf::DEST_BROWSER,
        // refer settings section for all configuration options
    ]

و اینجوری استفاده کنید
    $pdf = Yii::$app->pdf;
    $pdf->content = $htmlContent;
   return $pdf->render();


http://demos.krajee.com/mpdf#global-component
اون روشو قبلا امتحان کردم ولی بازم موقع اجرا کلاس Pdf پیدا نمیشه و خطا میده.

بعد از نصب yii2-mpdf توی چه پوشه ای از پروژه باید قرار بگیره؟
توی مسیر vendor یه پوشه به اسم kartik بسازین و داخلش یه پوشه دیگه به اسم mpdf و فایلهای داخل yii2-mpdf (نه خود پوشه رو) به اونجا منتقل کنید. قاعدتاً باید درست بشه.
درست نشد.
توی تیم ویور مشکل مشخص شد: نباید کامپوزر رو از داخل پوشه vendor اجرا کنید چون دوباره داخلش پوشه vendor میسازه. باید از توی همون پوشه پروژه اجرا کنید و اگه احیاناً خطا گرفتین که دستوراتی مثل parseLink و... رو پیدا نمیکنه، با دستور زیر کامپوزر رو به نسخه قبل برگردونید (شاید لازم باشه چندبار تکرار کنید) و بعد، دوباره با کامپوزر بسته رو نصب کنید:
composer self-update --rollback
حل شد.


تشکر از استاد شهرکی