Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InputParamsResolver.php
Go to the documentation of this file.
1 <?php
8 
13 
18 {
22  private $request;
23 
27  private $paramsOverrider;
28 
32  private $serviceInputProcessor;
33 
37  private $router;
38 
42  private $route;
43 
47  private $requestValidator;
48 
58  public function __construct(
59  RestRequest $request,
60  ParamsOverrider $paramsOverrider,
61  ServiceInputProcessor $serviceInputProcessor,
62  Router $router,
63  RequestValidator $requestValidator
64  ) {
65  $this->request = $request;
66  $this->paramsOverrider = $paramsOverrider;
67  $this->serviceInputProcessor = $serviceInputProcessor;
68  $this->router = $router;
69  $this->requestValidator = $requestValidator;
70  }
71 
78  public function resolve()
79  {
80  $this->requestValidator->validate();
81  $route = $this->getRoute();
82  $serviceMethodName = $route->getServiceMethod();
83  $serviceClassName = $route->getServiceClass();
84 
85  /*
86  * Valid only for updates using PUT when passing id value both in URL and body
87  */
88  if ($this->request->getHttpMethod() == RestRequest::HTTP_METHOD_PUT) {
89  $inputData = $this->paramsOverrider->overrideRequestBodyIdWithPathParam(
90  $this->request->getParams(),
91  $this->request->getBodyParams(),
92  $serviceClassName,
93  $serviceMethodName
94  );
95  $inputData = array_merge($inputData, $this->request->getParams());
96  } else {
97  $inputData = $this->request->getRequestData();
98  }
99 
100  $inputData = $this->paramsOverrider->override($inputData, $route->getParameters());
101  $inputParams = $this->serviceInputProcessor->process($serviceClassName, $serviceMethodName, $inputData);
102  return $inputParams;
103  }
104 
110  public function getRoute()
111  {
112  if (!$this->route) {
113  $this->route = $this->router->match($this->request);
114  }
115  return $this->route;
116  }
117 }
__construct(RestRequest $request, ParamsOverrider $paramsOverrider, ServiceInputProcessor $serviceInputProcessor, Router $router, RequestValidator $requestValidator)