GetByIdViewHelper.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace Opentalent\OtTemplating\ViewHelpers\Events;
  3. use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
  4. use Opentalent\OtTemplating\Domain\Repository\EventRepository;
  5. use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  6. /**
  7. * This view helper return the Event object matching the given id
  8. *
  9. * {namespace ot=Opentalent\OtTemplating\ViewHelpers}
  10. *
  11. * <ot:events.getById as="event"
  12. * eventId="1">
  13. * <f:debug>{event}</f:debug>
  14. * </ot:events.getById>
  15. *
  16. * @package Opentalent\OtTemplating\ViewHelpers
  17. */
  18. class GetByIdViewHelper extends AbstractViewHelper {
  19. use TemplateVariableViewHelperTrait;
  20. /**
  21. * >> Required to prevent typo3 to escape the html output
  22. * @var boolean
  23. */
  24. protected $escapeOutput = false;
  25. /**
  26. * @var \Opentalent\OtTemplating\Domain\Repository\EventRepository
  27. *
  28. */
  29. protected $eventRepository;
  30. public function initializeArguments()
  31. {
  32. $this->registerArgument(
  33. 'as',
  34. 'string',
  35. 'Name of the returned array',
  36. true
  37. );
  38. $this->registerArgument(
  39. 'eventId',
  40. 'integer',
  41. 'Id of the event',
  42. true
  43. );
  44. }
  45. /**
  46. * @return string
  47. */
  48. public function render()
  49. {
  50. $as = $this->arguments['as'];
  51. $eventId = $this->arguments['eventId'];
  52. $event = $this->eventRepository->findById($eventId);
  53. $variables = [$as => $event];
  54. return $this->renderChildrenWithVariables($variables);
  55. }
  56. /**
  57. * @param \Opentalent\OtTemplating\Domain\Repository\EventRepository $eventRepository
  58. */
  59. public function injectEventRepository(EventRepository $eventRepository)
  60. {
  61. $this->eventRepository = $eventRepository;
  62. }
  63. }