Url.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Layout\Argument\Interpreter;
  7. use Magento\Framework\Data\Argument\InterpreterInterface;
  8. use Magento\Framework\UrlInterface;
  9. /**
  10. * Interpreter that builds URL by input path and optional parameters
  11. */
  12. class Url implements InterpreterInterface
  13. {
  14. /**
  15. * @var UrlInterface
  16. */
  17. private $urlResolver;
  18. /**
  19. * @var NamedParams
  20. */
  21. private $paramsInterpreter;
  22. /**
  23. * @param UrlInterface $urlResolver
  24. * @param NamedParams $paramsInterpreter
  25. */
  26. public function __construct(UrlInterface $urlResolver, NamedParams $paramsInterpreter)
  27. {
  28. $this->urlResolver = $urlResolver;
  29. $this->paramsInterpreter = $paramsInterpreter;
  30. }
  31. /**
  32. * {@inheritdoc}
  33. * @return string
  34. * @throws \InvalidArgumentException
  35. */
  36. public function evaluate(array $data)
  37. {
  38. if (!isset($data['path'])) {
  39. throw new \InvalidArgumentException('URL path is missing.');
  40. }
  41. $urlPath = $data['path'];
  42. $urlParams = $this->paramsInterpreter->evaluate($data);
  43. return $this->urlResolver->getUrl($urlPath, $urlParams);
  44. }
  45. }