class MappedObjectController in Salesforce Suite 5.0.x
Same name and namespace in other branches
- 8.4 modules/salesforce_mapping_ui/src/Controller/MappedObjectController.php \Drupal\salesforce_mapping_ui\Controller\MappedObjectController
Returns responses for devel module routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\salesforce_mapping_ui\Controller\MappedObjectController
Expanded class hierarchy of MappedObjectController
File
- modules/
salesforce_mapping_ui/ src/ Controller/ MappedObjectController.php, line 14
Namespace
Drupal\salesforce_mapping_ui\ControllerView source
class MappedObjectController extends ControllerBase {
/**
* Access callback for Mapped Object entity.
*/
public function access(AccountInterface $account) {
if (!$account
->hasPermission('administer salesforce')) {
return AccessResult::forbidden();
}
// There must be a better way to get the entity from a route match.
$param = current(\Drupal::routeMatch()
->getParameters()
->all());
if (!is_object($param)) {
return AccessResult::forbidden();
}
$implements = class_implements($param);
if (empty($implements['Drupal\\Core\\Entity\\EntityInterface'])) {
return AccessResult::forbidden();
}
// Only allow access for entities with mappings.
return $this
->entityTypeManager()
->getStorage('salesforce_mapping')
->loadByEntity($param) ? AccessResult::allowed() : AccessResult::forbidden();
}
/**
* Helper function to get entity from router path.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* The route match service.
*
* @return \Drupal\Core\Entity\EntityInterface
* The Drupal entity mapped by the given mapped object.
*
* @throws \Exception
* If an EntityInterface is not found at the given route.
*
* @TODO find a more specific exception class
*/
private function getEntity(RouteMatchInterface $route_match) {
$parameter_name = $route_match
->getRouteObject()
->getOption('_salesforce_entity_type_id');
if (empty($parameter_name)) {
throw new \Exception('Entity type paramater not found.');
}
$entity = $route_match
->getParameter($parameter_name);
if (!$entity || !$entity instanceof EntityInterface) {
throw new \Exception('Entity is not of type EntityInterface');
}
return $entity;
}
/**
* Helper function to fetch existing MappedObject or create a new one.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity to be mapped.
*
* @return \Drupal\salesforce_mapping\Entity\MappedObject[]
* The Mapped Objects corresponding to the given entity.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
private function getMappedObjects(EntityInterface $entity) {
// @TODO this probably belongs in a service
return $this
->entityTypeManager()
->getStorage('salesforce_mapped_object')
->loadByEntity($entity);
}
/**
* List mapped objects for the entity along the current route.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* A RouteMatch object.
*
* @return array
* Array of page elements to render.
*
* @throws \Exception
*/
public function listing(RouteMatchInterface $route_match) {
$entity = $this
->getEntity($route_match);
$salesforce_mapped_objects = $this
->getMappedObjects($entity);
if (empty($salesforce_mapped_objects)) {
return [
'#markup' => $this
->t('No mapped objects for %label.', [
'%label' => $entity
->label(),
]),
];
}
// Show the entity view for the mapped object.
$builder = $this
->entityTypeManager()
->getListBuilder('salesforce_mapped_object');
return $builder
->setEntityIds(array_keys($salesforce_mapped_objects))
->render();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
46 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function | Returns a redirect response object for the specified route. | |
ControllerBase:: |
protected | function | Returns the state storage service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MappedObjectController:: |
public | function | Access callback for Mapped Object entity. | |
MappedObjectController:: |
private | function | Helper function to get entity from router path. | |
MappedObjectController:: |
private | function | Helper function to fetch existing MappedObject or create a new one. | |
MappedObjectController:: |
public | function | List mapped objects for the entity along the current route. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |