public function ApplicableTransactionAccess::access in Transaction 8
Check if the transaction type is applicable to the content entity.
Parameters
\Drupal\Core\Entity\ContentEntityInterface|null $entity: (optional) The involved content entity, determined from request if NULL.
\Drupal\transaction\TransactionTypeInterface|null $transaction_type: (optional) The transaction type, determined from the request or the route options if NULL.
\Symfony\Component\Routing\Route|null $route: (optional) The route to check access for.
\Symfony\Component\HttpFoundation\Request|null $request: (optional) The current request.
Return value
\Drupal\Core\Access\AccessResultInterface Allowed if the transaction type is applicable to the content entity.
File
- src/
Access/ ApplicableTransactionAccess.php, line 74  
Class
- ApplicableTransactionAccess
 - Checks access of applicable entity to transaction type.
 
Namespace
Drupal\transaction\AccessCode
public function access(ContentEntityInterface $entity = NULL, TransactionTypeInterface $transaction_type = NULL, Route $route = NULL, Request $request = NULL) {
  // Check access for the current route if none was given.
  if (!$route) {
    $route = $this->currentRouteMatch
      ->getRouteObject();
  }
  if (!$request) {
    $request = $this->requestStack
      ->getCurrentRequest();
  }
  // Try to determine the transaction type if it was not given.
  $transaction_type = $transaction_type ? $transaction_type : $this
    ->guessTransactionType($route, $request);
  if (!$transaction_type) {
    // Unable to determine the transaction type.
    return AccessResult::forbidden();
  }
  // Try to determine the target entity.
  $entity = $entity ? $entity : $this
    ->guessTargetEntity($route, $request);
  if (!$entity) {
    // Unable to determine the target entity.
    return AccessResult::forbidden();
  }
  $result = $transaction_type
    ->isApplicable($entity) ? AccessResult::allowed() : AccessResult::forbidden();
  return $result
    ->addCacheableDependency($entity)
    ->addCacheableDependency($transaction_type);
}