Source of file BaseDocumentTemplate.php
Size: 3,227 Bytes - Last Modified: 2019-09-16T10:31:02+00:00
/home/vagrant/www/document-templates/src/DocumentTemplates/BaseDocumentTemplate.php
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | <?phpnamespace BWF\DocumentTemplates\DocumentTemplates; use BWF\DocumentTemplates\Exceptions\InvalidClassException; use BWF\DocumentTemplates\Layouts\LayoutInterface; use BWF\DocumentTemplates\Renderers\PdfRendererInterface; use BWF\DocumentTemplates\TemplateDataSources\TemplateDataSource; use BWF\DocumentTemplates\TemplateDataSources\TemplateDataSourceFactory; use BWF\DocumentTemplates\TemplateDataSources\TemplateDataSourceInterface; trait BaseDocumentTemplate {/** * @var \BWF\DocumentTemplates\Layouts\Layout */protected $layout; /** * @var \BWF\DocumentTemplates\Renderers\Renderer */protected $renderer; /** * Stores the datasource instances containing the renderable data. Used for template rendering. * * @var TemplateDataSource[] */private $templateData = []; protected abstract function dataSources(); /** * @param array|\stdClass|TemplateDataSourceInterface $data * @param string $name * @param bool $isIterable * @param string $iterableName Use as an iterable variable in the template * @return TemplateDataSource */protected function dataSource($data, $name = '', $isIterable = false, $iterableName = '') { $templateDataSource = TemplateDataSourceFactory::build($data, $name); if ($isIterable) { $templateDataSource = collect([$templateDataSource]); $templateDataSource = TemplateDataSourceFactory::build($templateDataSource, $iterableName); } return $templateDataSource; } public function setLayout(LayoutInterface $layout) { $this->layout = $layout; } public function addTemplateData($data, $name = '') { $this->templateData[] = TemplateDataSourceFactory::build($data, $name); } public function getTemplatePlaceholders() { $placeholders = []; foreach ($this->dataSources() as $dataSource) { $placeholders[] = $dataSource->getPlaceholders(); } return $placeholders; } public function render() { return $this->renderer->render( $this->layout, $this->getTemplates(), $this->templateData ); } public function renderPdf($filePath) { $renderer = $this->getPdfRenderer(); $renderer->render( $this->layout, $this->getTemplates(), $this->templateData, $filePath ); return $filePath; } public function setRenderer($renderer) { $this->renderer = $renderer; } /** * @return PdfRendererInterface * @throws InvalidClassException */private function getPdfRenderer() : PdfRendererInterface { $pdfRendererClass = config('document_templates.pdf_renderer'); $renderer = new $pdfRendererClass(); if (!$renderer instanceof PdfRendererInterface) { throw new InvalidClassException(sprintf('The configured pdf renderer (%s) is invalid. The renderer should implement the %s', $pdfRendererClass, PdfRendererInterface::class)); } return $renderer; } } |