protected EntityResolverManager::setParametersFromEntityInformation(Route $route)
Sets the upcasting information using the _entity_* route defaults.
Supports the '_entity_view' and '_entity_form' route defaults.
Parameters
\Symfony\Component\Routing\Route $route: The route object.
File
- core/lib/Drupal/Core/Entity/EntityResolverManager.php, line 161
Class
- EntityResolverManager
- Sets the entity route parameter converter options automatically.
Namespace
Drupal\Core\Entity
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 | protected function setParametersFromEntityInformation(Route $route ) { if ( $entity_view = $route ->getDefault( '_entity_view' )) { list( $entity_type ) = explode ( '.' , $entity_view , 2); } elseif ( $entity_form = $route ->getDefault( '_entity_form' )) { list( $entity_type ) = explode ( '.' , $entity_form , 2); } // Do not add parameter information if the route does not declare a // parameter in the first place. This is the case for add forms, for // example. if (isset( $entity_type ) && isset( $this ->getEntityTypes()[ $entity_type ]) && ( strpos ( $route ->getPath(), '{' . $entity_type . '}' ) !== FALSE)) { $parameter_definitions = $route ->getOption( 'parameters' ) ? : array (); // First try to figure out whether there is already a parameter upcasting // the same entity type already. foreach ( $parameter_definitions as $info ) { if (isset( $info [ 'type' ]) && ( strpos ( $info [ 'type' ], 'entity:' ) === 0)) { // The parameter types are in the form 'entity:$entity_type'. list(, $parameter_entity_type ) = explode ( ':' , $info [ 'type' ], 2); if ( $parameter_entity_type == $entity_type ) { return ; } } } if (!isset( $parameter_definitions [ $entity_type ])) { $parameter_definitions [ $entity_type ] = array (); } $parameter_definitions [ $entity_type ] += array ( 'type' => 'entity:' . $entity_type , ); if (! empty ( $parameter_definitions )) { $route ->setOption( 'parameters' , $parameter_definitions ); } } } |
Please login to continue.