class AjaxExampleController
Same name in other branches
- 8.x-1.x ajax_example/src/Controller/AjaxExampleController.php \Drupal\ajax_example\Controller\AjaxExampleController
- 4.0.x modules/ajax_example/src/Controller/AjaxExampleController.php \Drupal\ajax_example\Controller\AjaxExampleController
Controller routines for AJAX example routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements \Drupal\Core\DependencyInjection\ContainerInjectionInterface uses \Drupal\Core\Logger\LoggerChannelTrait, \Drupal\Core\Messenger\MessengerTrait, \Drupal\Core\Routing\RedirectDestinationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait
- class \Drupal\ajax_example\Controller\AjaxExampleController extends \Drupal\Core\Controller\ControllerBase uses \Drupal\examples\Utility\DescriptionTemplateTrait
Expanded class hierarchy of AjaxExampleController
File
-
modules/
ajax_example/ src/ Controller/ AjaxExampleController.php, line 15
Namespace
Drupal\ajax_example\ControllerView source
class AjaxExampleController extends ControllerBase {
use DescriptionTemplateTrait;
/**
* {@inheritdoc}
*/
protected function getModuleName() {
return 'ajax_example';
}
/**
* Demonstrates a clickable AJAX-enabled link using the 'use-ajax' class.
*
* Because of the 'use-ajax' class applied here, the link submission is done
* without a page refresh.
*
* When using the AJAX framework outside the context of a form or a renderable
* array of type 'link', you have to include ajax.js explicitly.
*
* @return array
* Form API array.
*
* @ingroup ajax_example
*/
public function renderLinkRenderableArray() {
$build['my_div'] = [
'#markup' => $this->t('
The link below has been rendered as an element with the #ajax property, so if
javascript is enabled, ajax.js will try to submit it via an AJAX call instead
of a normal page load. The URL also contains the "/nojs/" magic string, which
is stripped if javascript is enabled, allowing the server code to tell by the
URL whether JS was enabled or not, letting it do different things based on that.'),
];
// We'll add a nice border element for our demo.
$build['ajax_link'] = [
'#type' => 'details',
'#title' => $this->t('This is the AJAX link'),
'#open' => TRUE,
];
// We build the AJAX link.
$build['ajax_link']['link'] = [
'#type' => 'link',
'#title' => $this->t('Click me'),
// We have to ensure that Drupal's Ajax system is loaded.
'#attached' => [
'library' => [
'core/drupal.ajax',
],
],
// We add the 'use-ajax' class so that Drupal's AJAX system can spring
// into action.
'#attributes' => [
'class' => [
'use-ajax',
],
],
// The URL for this link element is the callback. In our case, it's route
// ajax_example.ajax_link_callback, which maps to ajaxLinkCallback()
// below. The route has a /{nojs} section, which is how the callback can
// know whether the request was made by AJAX or some other means where
// JavaScript won't be able to handle the result. If the {nojs} part of
// the path is replaced with 'ajax', then the request was made by AJAX.
'#url' => Url::fromRoute('ajax_example.ajax_link_callback', [
'nojs' => 'nojs',
]),
];
// We provide a DIV that AJAX can append some text into.
$build['ajax_link']['destination'] = [
'#type' => 'container',
'#attributes' => [
'id' => [
'ajax-example-destination-div',
],
],
];
return $build;
}
/**
* Callback for link example.
*
* Takes different logic paths based on whether Javascript was enabled.
* If $type == 'ajax', it tells this function that ajax.js has rewritten
* the URL and thus we are doing an AJAX and can return an array of commands.
*
* @param string $nojs
* Either 'ajax' or 'nojs. Type is simply the normal URL argument to this
* URL.
*
* @return string|array
* If $type == 'ajax', returns an array of AJAX Commands.
* Otherwise, just returns the content, which will end up being a page.
*/
public function ajaxLinkCallback($nojs = 'nojs') {
// Determine whether the request is coming from AJAX or not.
if ($nojs == 'ajax') {
$output = $this->t("This is some content delivered via AJAX");
$response = new AjaxResponse();
$response->addCommand(new AppendCommand('#ajax-example-destination-div', $output));
// See ajax_example_advanced.inc for more details on the available
// commands and how to use them.
// $page = array('#type' => 'ajax', '#commands' => $commands);
// ajax_deliver($response);
return $response;
}
$response = new Response($this->t("This is some content delivered via a page load."));
return $response;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
AjaxExampleController::ajaxLinkCallback | public | function | Callback for link example. | ||
AjaxExampleController::getModuleName | protected | function | Name of our module. | Overrides DescriptionTemplateTrait::getModuleName | |
AjaxExampleController::renderLinkRenderableArray | public | function | Demonstrates a clickable AJAX-enabled link using the 'use-ajax' class. | ||
ControllerBase::$configFactory | protected | property | The configuration factory. | ||
ControllerBase::$currentUser | protected | property | The current user service. | 3 | |
ControllerBase::$entityFormBuilder | protected | property | The entity form builder. | ||
ControllerBase::$entityTypeManager | protected | property | The entity type manager. | ||
ControllerBase::$formBuilder | protected | property | The form builder. | 1 | |
ControllerBase::$keyValue | protected | property | The key-value storage. | 1 | |
ControllerBase::$languageManager | protected | property | The language manager. | 1 | |
ControllerBase::$moduleHandler | protected | property | The module handler. | 1 | |
ControllerBase::$stateService | protected | property | The state service. | ||
ControllerBase::cache | protected | function | Returns the requested cache bin. | ||
ControllerBase::config | protected | function | Retrieves a configuration object. | ||
ControllerBase::container | private | function | Returns the service container. | ||
ControllerBase::create | public static | function | Instantiates a new instance of this class. | Overrides ContainerInjectionInterface::create | 49 |
ControllerBase::currentUser | protected | function | Returns the current user. | 3 | |
ControllerBase::entityFormBuilder | protected | function | Retrieves the entity form builder. | ||
ControllerBase::entityTypeManager | protected | function | Retrieves the entity type manager. | ||
ControllerBase::formBuilder | protected | function | Returns the form builder service. | 1 | |
ControllerBase::keyValue | protected | function | Returns a key/value storage collection. | 1 | |
ControllerBase::languageManager | protected | function | Returns the language manager service. | 1 | |
ControllerBase::moduleHandler | protected | function | Returns the module handler. | 1 | |
ControllerBase::redirect | protected | function | Returns a redirect response object for the specified route. | ||
ControllerBase::state | protected | function | Returns the state storage service. | ||
DescriptionTemplateTrait::description | public | function | Generate a render array with our templated content. | ||
DescriptionTemplateTrait::getDescriptionTemplatePath | protected | function | Get full path to the template. | ||
DescriptionTemplateTrait::getDescriptionVariables | protected | function | Variables to act as context to the twig template file. | 1 | |
LoggerChannelTrait::$loggerFactory | protected | property | The logger channel factory service. | ||
LoggerChannelTrait::getLogger | protected | function | Gets the logger for a specific channel. | ||
LoggerChannelTrait::setLoggerFactory | public | function | Injects the logger channel factory. | ||
MessengerTrait::$messenger | protected | property | The messenger. | 17 | |
MessengerTrait::messenger | public | function | Gets the messenger. | 17 | |
MessengerTrait::setMessenger | public | function | Sets the messenger. | ||
RedirectDestinationTrait::$redirectDestination | protected | property | The redirect destination service. | 1 | |
RedirectDestinationTrait::getDestinationArray | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | ||
RedirectDestinationTrait::getRedirectDestination | protected | function | Returns the redirect destination service. | ||
RedirectDestinationTrait::setRedirectDestination | public | function | Sets the redirect destination service. | ||
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. |