Forward.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Controller\Result;
  7. use Magento\Framework\App\RequestInterface;
  8. use Magento\Framework\App\Response\HttpInterface as HttpResponseInterface;
  9. use Magento\Framework\Controller\AbstractResult;
  10. class Forward extends AbstractResult
  11. {
  12. /**
  13. * @var \Magento\Framework\App\RequestInterface
  14. */
  15. protected $request;
  16. /**
  17. * @var string
  18. */
  19. protected $module;
  20. /**
  21. * @var string
  22. */
  23. protected $controller;
  24. /**
  25. * @var array
  26. */
  27. protected $params = [];
  28. /**
  29. * @param RequestInterface $request
  30. */
  31. public function __construct(RequestInterface $request)
  32. {
  33. $this->request = $request;
  34. }
  35. /**
  36. * @param string $module
  37. * @return $this
  38. */
  39. public function setModule($module)
  40. {
  41. $this->module = $module;
  42. return $this;
  43. }
  44. /**
  45. * @param string $controller
  46. * @return $this
  47. */
  48. public function setController($controller)
  49. {
  50. $this->controller = $controller;
  51. return $this;
  52. }
  53. /**
  54. * @param array $params
  55. * @return $this
  56. */
  57. public function setParams(array $params)
  58. {
  59. $this->params = $params;
  60. return $this;
  61. }
  62. /**
  63. * @param string $action
  64. * @return $this
  65. */
  66. public function forward($action)
  67. {
  68. $this->request->initForward();
  69. if (!empty($this->params)) {
  70. $this->request->setParams($this->params);
  71. }
  72. if (!empty($this->controller)) {
  73. $this->request->setControllerName($this->controller);
  74. // Module should only be reset if controller has been specified
  75. if (!empty($this->module)) {
  76. $this->request->setModuleName($this->module);
  77. }
  78. }
  79. $this->request->setActionName($action);
  80. $this->request->setDispatched(false);
  81. return $this;
  82. }
  83. /**
  84. * {@inheritdoc}
  85. */
  86. protected function render(HttpResponseInterface $response)
  87. {
  88. return $this;
  89. }
  90. }