eca-1.0.x-dev/modules/endpoint/src/Plugin/Action/ResponseAjaxCommandBase.php
modules/endpoint/src/Plugin/Action/ResponseAjaxCommandBase.php
<?php
namespace Drupal\eca_endpoint\Plugin\Action;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\CommandInterface;
use Drupal\Core\Session\AccountInterface;
/**
* Base class for response actions.
*/
abstract class ResponseAjaxCommandBase extends ResponseActionBase {
/**
* {@inheritdoc}
*/
public function access($object, ?AccountInterface $account = NULL, $return_as_object = FALSE) {
return $this->getResponse() instanceof AjaxResponse ?
AccessResult::allowed() :
parent::access($object, $account, $return_as_object);
}
/**
* {@inheritdoc}
*/
protected function doExecute(): void {
$response = $this->getResponse();
if ($response instanceof AjaxResponse) {
$response->addCommand($this->getAjaxCommand());
}
}
/**
* Get the ajax command, that should be added to the response.
*
* @return \Drupal\Core\Ajax\CommandInterface
* The ajax command..
*/
abstract protected function getAjaxCommand(): CommandInterface;
}
