protected ControllerResolver::doGetArguments(Request $request, $controller, array $parameters)
Overrides ControllerResolver::doGetArguments
File
- core/lib/Drupal/Core/Controller/ControllerResolver.php, line 131
Class
- ControllerResolver
- ControllerResolver to enhance controllers beyond Symfony's basic handling.
Namespace
Drupal\Core\Controller
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | protected function doGetArguments(Request $request , $controller , array $parameters ) { $attributes = $request ->attributes->all(); $raw_parameters = $request ->attributes->has( '_raw_variables' ) ? $request ->attributes->get( '_raw_variables' ) : []; $arguments = array (); foreach ( $parameters as $param ) { if ( array_key_exists ( $param ->name, $attributes )) { $arguments [] = $attributes [ $param ->name]; } elseif ( array_key_exists ( $param ->name, $raw_parameters )) { $arguments [] = $attributes [ $param ->name]; } elseif ( $param ->getClass() && $param ->getClass()->isInstance( $request )) { $arguments [] = $request ; } elseif ( $param ->getClass() && $param ->getClass()->name === ServerRequestInterface:: class ) { $arguments [] = $this ->httpMessageFactory->createRequest( $request ); } elseif ( $param ->getClass() && ( $param ->getClass()->name == RouteMatchInterface:: class || is_subclass_of ( $param ->getClass()->name, RouteMatchInterface:: class ))) { $arguments [] = RouteMatch::createFromRequest( $request ); } elseif ( $param ->isDefaultValueAvailable()) { $arguments [] = $param ->getDefaultValue(); } else { if ( is_array ( $controller )) { $repr = sprintf( '%s::%s()' , get_class( $controller [0]), $controller [1]); } elseif ( is_object ( $controller )) { $repr = get_class( $controller ); } else { $repr = $controller ; } throw new \RuntimeException(sprintf( 'Controller "%s" requires that you provide a value for the "$%s" argument (because there is no default value or because there is a non optional argument after this one).' , $repr , $param ->name)); } } return $arguments ; } |
Please login to continue.