templateContentRaw = $listElementTemplate->getRawContent(); $this->templateFieldNames = $listElementTemplate->getFields(); $this->templateFieldDelimiter = $listElementTemplate->getDelimiter(); $this->repository = $repository; $this->transformer = $transformer; } /** * @param array $criteria * @param int $offset * @param int $limit * @param bool $cleanup * @return bool|string */ public function render(array $criteria, $offset = 0, $limit = 0, $cleanup = true) { if($this->renderedContent) {return $this->renderedContent;} $collection = $this->repository->findByCriteria($criteria,$offset,$limit); $renderedString = ''; $content = ''; foreach($collection as $listElement) { $content = $this->templateContentRaw; foreach($this->templateFieldNames as $fieldName) { if(property_exists($listElement,$fieldName)) { $valueStr = $this->transformer->toString($listElement->$fieldName); $token = '{' . $this->templateFieldDelimiter . $fieldName . $this->templateFieldDelimiter . '}'; $content = str_replace($token,$valueStr,$content); } } } if($cleanup) { foreach($this->templateFieldNames as $fieldName) { $token = '{' . $this->templateFieldDelimiter . $fieldName . $this->templateFieldDelimiter . '}'; $content = str_replace($token,'',$content); } } $renderedString .= $content; $this->renderedContent = $renderedString; return $this->renderedContent; } }