رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دلیل خطای Class 'kartik\mpdf\Pdf' not found چیست؟ (حل شد)
#1
سلام.

با دستور زیر kartik\mpdf\Pdf رو برای yii2 نصب کردم:

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

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

use kartik\mpdf\Pdf;

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

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

   // setup kartik\mpdf\Pdf 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 = \yii\web\Response::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 'kartik\mpdf\Pdf' not found

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

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

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

namespace kartik\mpdf;

میشه برا یه اکشن خاص فضای نام منحصر به فردی تعیین کرد؟
پاسخ
تشکر شده توسط:
#4
چرا موقع اجرا use kartik\mpdf\Pdf کار نمیکنه؟
پاسخ
تشکر شده توسط:
#5
داخل 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
پاسخ
تشکر شده توسط: abdollah110110
#6
اون روشو قبلا امتحان کردم ولی بازم موقع اجرا کلاس Pdf پیدا نمیشه و خطا میده.

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


تشکر از استاد شهرکی
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان