* {event}
*
*
* @package Opentalent\OtTemplating\ViewHelpers
*/
class GetByIdViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
use LoggerAwareTrait;
use TemplateVariableViewHelperTrait;
/**
* >> Required to prevent typo3 to escape the html output
* @var boolean
*/
protected $escapeOutput = false;
/**
* @var EventRepository
*/
protected $eventRepository;
/**
* -- This method is expected by Fluid --
* Declares the viewhelper's parameters
*/
public function initializeArguments()
{
$this->registerArgument(
'as',
'string',
'Name of the returned array',
true
);
$this->registerArgument(
'eventId',
'integer',
'Id of the event',
true
);
}
/**
* -- This method is expected by Fluid --
* Renders the content as html
*
* @return string
* @throws ApiRequestException
*/
public function render()
{
$as = $this->arguments['as'];
$eventId = $this->arguments['eventId'];
try {
$event = $this->eventRepository->findById($eventId);
} catch (ApiRequestException $e) {
$this->logger->error(sprintf('API Error: %s', $e->getMessage()));
$event = new Event();
$event->setName("");
$event->setDescription("Une erreur s'est produite et ne permet pas l'affichage de cet évènement. Veuillez nous excusez pour la gêne occasionnée.");
}
$variables = [$as => $event];
return $this->renderChildrenWithVariables($variables);
}
/**
* @param EventRepository $eventRepository
*/
public function injectEventRepository(EventRepository $eventRepository)
{
$this->eventRepository = $eventRepository;
}
}