Rozbehanie Joseki/PdfResponse chyba pri použítí

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
KristianSubweb
Člen | 146
+
0
-

Ahojte nevedeli by ste podariť čo stýmto ?

Malo by to byť verziov php mometálne mám 7.1.12

public function actionPdf()
    {
        $this->setNeededPrivilage("view");
        $template = $this->createTemplate();
        $template->setFile(__DIR__ . "/Pdf/template.latte");

        $pdf = new \Joseki\Application\Responses\PdfResponse($template);
        $pdf->setSaveMode(\Joseki\Application\Responses\PdfResponse::INLINE);
        $this->sendResponse($pdf);
    }

Chyba:

Switch statements may only contain one default clause search►
Source file
File: .../www/Billbardovo/vendor/mpdf/mpdf/mpdf.php:1424

1414:                case 'LETTER': {$format = array(612.00,792.00); break;}
1415:                case 'LEGAL': {$format = array(612.00,1008.00); break;}
1416:                case 'LEDGER': {$format = array(279.00,432.00); break;}
1417:                case 'TABLOID': {$format = array(279.00,432.00); break;}
1418:                case 'EXECUTIVE': {$format = array(521.86,756.00); break;}
1419:                case 'FOLIO': {$format = array(612.00,936.00); break;}
1420:                case 'B': {$format=array(362.83,561.26 );     break;}        //    'B' format paperback size 128x198mm
1421:                case 'A': {$format=array(314.65,504.57 );     break;}        //    'A' format paperback size 111x178mm
1422:                case 'DEMY': {$format=array(382.68,612.28 );  break;}        //    'Demy' format paperback size 135x216mm
1423:                case 'ROYAL': {$format=array(433.70,663.30 );  break;}    //    'Royal' format paperback size 153x234mm
1424:                default: $format = false;
1425:            }
1426:        return $format;
1427:    }

je na riadku 1424. :( niekto nejaké riešenie alebo odporučenie niečoho čo spolahlivo beží ? ďakujem

nightfish
Člen | 527
+
0
-

Řešením je upgradovat mPDF na verzi, která má tuto chybu opravenou.

Když si vyroluješ v kódu mpdf.php ještě o pár řádků výš, najdeš tam řádek, kde je default použito poprvé:

 case 'A4': default: {$format = array(595.28,841.89); break;}
KristianSubweb
Člen | 146
+
0
-

nightfish napsal(a):

Řešením je upgradovat mPDF na verzi, která má tuto chybu opravenou.

Když si vyroluješ v kódu mpdf.php ještě o pár řádků výš, najdeš tam řádek, kde je default použito poprvé:

 case 'A4': default: {$format = array(595.28,841.89); break;}

Ďakujem :) je to oka :))

KristianSubweb
Člen | 146
+
0
-

Ašte by ma zaujímalo ako dokážem poslať do toho templatu nejakú premennu kde mám uložené data.
Cez this->template to asi nejde či ?

public function actionPdf($id)
    {
		$dataBillboard = $this->billboardService->getById($id);

        $this->template->data = $dataBillboard;

        $this->setNeededPrivilage("view");
        $template = $this->createTemplate();
        $template->setFile(__DIR__ . "/Pdf/template.latte");

        $pdf = new \Joseki\Application\Responses\PdfResponse($template);
        $pdf->setSaveMode(\Joseki\Application\Responses\PdfResponse::INLINE);
        $this->sendResponse($pdf);
    }
GEpic
Člen | 566
+
0
-

KristianSubweb napsal(a):

Ašte by ma zaujímalo ako dokážem poslať do toho templatu nejakú premennu kde mám uložené data.
Cez this->template to asi nejde či ?

A proč myslíš že tam máš tenhle kus kódu? :)

	$template = $this->createTemplate();
	$template->setFile(__DIR__ . "/Pdf/template.latte");

$this je v tvém případě presenter, takže přes $this->template nastavuješ proměnné do šablony presenteru, ale ty odesíláš uživateli PdfResponse, které do konstruktoru předáváš tebou vytvořenou šablonu v proměnné $template, takže šablona presenteru se k uživateli nikdy nedostane.

Takže si předej data do šablony PDFka takto:

	$template->data = "nejaka data";

Editoval GEpic (11. 5. 2018 12:06)

KristianSubweb
Člen | 146
+
0
-

GEpic napsal(a):

KristianSubweb napsal(a):

Ašte by ma zaujímalo ako dokážem poslať do toho templatu nejakú premennu kde mám uložené data.
Cez this->template to asi nejde či ?

A proč myslíš že tam máš tenhle kus kódu? :)

	$template = $this->createTemplate();
	$template->setFile(__DIR__ . "/Pdf/template.latte");

$this je v tvém případě presenter, takže přes $this->template nastavuješ proměnné do šablony presenteru, ale ty odesíláš uživateli PdfResponse, které do konstruktoru předáváš tebou vytvořenou šablonu v proměnné $template, takže šablona presenteru se k uživateli nikdy nedostane.

Takže si předej data do šablony PDFka takto:

	$template->data = "nejaka data";

Ďakujem :)