本文整理汇总了PHP中Drupal::routeMatch方法的典型用法代码示例。如果您正苦于以下问题:PHP Drupal::routeMatch方法的具体用法?PHP Drupal::routeMatch怎么用?PHP Drupal::routeMatch使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Drupal
的用法示例。
在下文中一共展示了Drupal::routeMatch方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: preprocessVariables
/**
* {@inheritdoc}
*/
public function preprocessVariables(Variables $variables)
{
$breadcrumb =& $variables['breadcrumb'];
// Determine if breadcrumbs should be displayed.
$breadcrumb_visibility = $this->theme->getSetting('breadcrumb');
if ($breadcrumb_visibility == 0 || $breadcrumb_visibility == 2 && \Drupal::service('router.admin_context')->isAdminRoute() || empty($breadcrumb)) {
$breadcrumb = [];
return;
}
// Optionally get rid of the homepage link.
$show_breadcrumb_home = $this->theme->getSetting('breadcrumb_home');
if (!$show_breadcrumb_home) {
array_shift($breadcrumb);
}
if ($this->theme->getSetting('breadcrumb_title') && !empty($breadcrumb)) {
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$page_title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
if (!empty($page_title)) {
$breadcrumb[] = ['text' => $page_title, 'attributes' => new Attribute(['class' => ['active']])];
// Add cache context based on url.
$variables->addCacheContexts(['url']);
}
}
}
示例2: build
/**
* {@inheritdoc}
*/
public function build()
{
$block = array('#theme' => 'fblikebutton', '#layout' => $this->configuration['layout'], '#show_faces' => $this->configuration['show_faces'], '#action' => $this->configuration['action'], '#font' => $this->configuration['font'], '#color_scheme' => $this->configuration['color_scheme'], '#width' => $this->configuration['iframe_width'], '#height' => $this->configuration['iframe_height'], '#other_css' => $this->configuration['iframe_css'], '#language' => $this->configuration['language']);
// If it's not for the current page
if ($this->configuration['block_url'] != '<current>') {
$block['#url'] = $this->configuration['block_url'];
} else {
// Avoid this block to be cached
$block['#cache'] = array('max-age' => 0);
/**
* Drupal uses the /node path to refers to the frontpage. That's why facebook
* could point to www.example.com/node instead of wwww.example.com.
*
* To avoid this, we check if the current path is the frontpage
*/
// Check if the path is pointing home
if (\Drupal::routeMatch()->getRouteName() == 'view.frontpage.page_1') {
global $base_url;
$block['#url'] = $base_url;
} else {
$block['#url'] = Url::fromRoute('<current>', array(), array('absolute' => true))->toString();
}
}
return $block;
}
示例3: build
/**
* {@inheritdoc}
*/
public function build()
{
$items = array();
// When on a node page, the parameter is already upcast as a node.
$node = \Drupal::routeMatch()->getParameter('node');
if ($node) {
// Read about entity query at http://www.sitepoint.com/drupal-8-version-entityfieldquery/.
// See query API at https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21Query%21QueryInterface.php/interface/QueryInterface/8.
// The static method for using the query service would have been:
// $query = \Drupal::entityQuery('node');
// Use injected queryFactory to look for items that are related
// to the show that matches the input nid.
$query = $this->entity_query->get('node')->condition('status', 1)->condition('type', 'tv_episode')->sort('field_related_season.entity.field_season_number.value', 'DESC')->sort('field_episode_number', 'DESC')->range(0, 5)->condition('field_related_season.entity.field_related_show.entity.nid', $node->id());
$nids = $query->execute();
// Note that entity_load() is deprecated.
// The static method of loading the entity would have been:
// \Drupal\node\Entity\Node::load();
// Use the injected entityManager to load the results into an array of node objects.
$nodes = $this->entity_manager->getStorage('node')->loadMultiple($nids);
foreach ($nodes as $node) {
// Create a render array for each title field.
// Note that field_view_field() is deprecated, use the view method on the field.
$title = $node->title->view('full');
// Entities have a handy toLink() method.
$items[] = $node->toLink($title);
}
}
// Return a render array for a html list.
return ['#theme' => 'item_list', '#items' => $items, '#cache' => ['contexts' => ['route']]];
}
示例4: build
/**
* {@inheritdoc}
*/
public function build()
{
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
return array('#markup' => $title);
}
示例5: formElement
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state)
{
$OriginalValue = '';
if (($node = \Drupal::routeMatch()->getParameter('node')) && $node instanceof \Drupal\node\NodeInterface) {
$FiledsView = $items->view();
$LangCode = $items->getLangcode();
$FieldName = $FiledsView['#field_name'];
$node = (array) $node;
$arrayValues = array_values($node);
if (isset($arrayValues[0]['langcode']['x-default']) && $arrayValues[0]['langcode']['x-default'] != $LangCode) {
if ($FieldName != 'title') {
if (isset($arrayValues[0][$FieldName]['x-default'][0]['value'])) {
$OriginalValue = $arrayValues[0][$FieldName]['x-default'][0]['value'];
}
} else {
if (isset($arrayValues[0][$FieldName]['x-default'])) {
$OriginalValue = $arrayValues[0][$FieldName]['x-default'];
}
}
$Title = $OriginalValue;
$OriginalValue = Unicode::truncate($OriginalValue, 200, TRUE);
$OriginalValue = '<div class="original_text" title="' . $Title . '"><span class="original">ORIGINAL: </span>' . $OriginalValue . '</div>';
}
}
$element['value'] = $element + array('#type' => 'textfield', '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : NULL, '#size' => $this->getSetting('size'), '#placeholder' => $this->getSetting('placeholder'), '#maxlength' => $this->getFieldSetting('max_length'), '#attributes' => array('class' => array('text-full')), '#suffix' => $OriginalValue);
return $element;
}
示例6: submitForm
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state)
{
//TODO v2 Send Email via Cron not on Submit
$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
$username = $user->get('name')->value;
$userId = $user->get('uid')->value;
$mailManager = \Drupal::service('plugin.manager.mail');
$jobNode = \Drupal::routeMatch()->getParameter('node');
$jobNodeTitle = $jobNode->getTitle();
$companyNodeEntity = $jobNode->get('field_company');
$companyNode = \Drupal\node\Entity\Node::load($companyNodeEntity->entity->id());
$companyEmail = $companyNode->field_email->value;
$resumeFileId = $form_state->getValue('resume');
$resumeFile = db_select('file_managed', 'f')->condition('f.fid', $resumeFileId, '=')->fields('f', array('uri'))->execute()->fetchField();
$atttachment = array('filepath' => $resumeFile);
$module = 'job_mailer';
$key = 'apply_job';
$params['job_title'] = $jobNodeTitle;
$params['message'] = "<html>\n <p>Please see attached resume for user: {$username}\n </html>";
$params['attachment'] = $atttachment;
$langcode = \Drupal::currentUser()->getPreferredLangcode();
$send = true;
$reply = \Drupal::config('system.site')->get('mail');
$result = $mailManager->mail($module, $key, $companyEmail, $langcode, $params, $reply, $send);
db_insert('user_job_application')->fields(array('job_id' => $jobNode->id(), 'user_id' => $userId, 'date' => date('Y-m-d H:i:s')))->execute();
drupal_set_message('Your application has been sent.');
}
示例7: onRequest
/**
* @event kernel.controller
* @priority 9999
* @param FilterControllerEvent $e
*/
static function onRequest($e)
{
if ($variants = Submodules::fastInvoke('route_alter_variants')[\Drupal::routeMatch()->getRouteName()] ?? NULL) {
foreach ($variants as $variant) {
if (!isset($variant['applies']) || is_callable($variant['applies']) && $variant['applies']()) {
$e->setController($variant['controller']);
break;
}
}
}
}
示例8: viewElements
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode)
{
// Get the current node.
$node = \Drupal::routeMatch()->getParameter('node');
// Build the field quiz answer form
$form_object = new FieldQuizAnswerForm($node, $items);
$form = \Drupal::formBuilder()->getForm($form_object);
$elements = array();
// Add the output to the node.
$elements[] = $build['field_quiz'] = ['#theme' => 'field_quiz_question_view', '#form' => $form];
return $elements;
}
示例9: revertAccess
/**
* Access check, to be called from
* - module.routing.yml
* - hook_entity_operation
*
* @param \Drupal\workflow_operations\WorkflowTransitionInterface|NULL $transition
*
* @return \Drupal\Core\Access\AccessResult
*/
public function revertAccess(WorkflowTransitionInterface $transition = NULL, AccountInterface $account = NULL, $return_as_object = TRUE)
{
//public function access(EntityInterface $entity, $operation, AccountInterface $account = NULL, $return_as_object = FALSE) {
if ($transition) {
// Called from hook_entity_operation
} else {
// Called from module.routing.yml
/* @var $transition WorkflowTransitionInterface */
$route_match = \Drupal::routeMatch();
$transition = $route_match->getParameter('workflow_transition');
}
return $this->access($transition, 'revert', $account, $return_as_object);
}
示例10: testConfigTranslationFormAlter
/**
* Tests altering of the configuration translation forms.
*/
public function testConfigTranslationFormAlter()
{
$form_builder = \Drupal::formBuilder();
$add_form = $form_builder->getForm('Drupal\\config_translation\\Form\\ConfigTranslationAddForm', \Drupal::routeMatch(), $this->pluginId, $this->langcode);
$edit_form = $form_builder->getForm('Drupal\\config_translation\\Form\\ConfigTranslationEditForm', \Drupal::routeMatch(), $this->pluginId, $this->langcode);
// Test that hook_form_BASE_FORM_ID_alter() was called for the base form ID
// 'config_translation_form'.
$this->assertTrue($add_form['#base_altered']);
$this->assertTrue($edit_form['#base_altered']);
// Test that hook_form_FORM_ID_alter() was called for the form IDs
// 'config_translation_add_form' and 'config_translation_edit_form'.
$this->assertTrue($add_form['#altered']);
$this->assertTrue($edit_form['#altered']);
}
示例11: addAnotherAccess
/**
* Takes the user to the node creation page for the type of a given node.
*/
public function addAnotherAccess(NodeInterface $node)
{
if (!$node->access('create')) {
return AccessResult::forbidden();
}
$config = \Drupal::config('addanother.settings');
$account = \Drupal::currentUser();
$type = $node->getType();
if (\Drupal::routeMatch()->getRouteName() == 'entity.node.edit_form' && !$config->get('tab_edit.' . $type)) {
return AccessResult::forbidden();
}
if ($config->get('tab.' . $type) && $account->hasPermission('use add another')) {
return AccessResult::allowed();
}
return AccessResult::forbidden();
}
示例12: onAccessDeniedException
/**
* Set the properly exception for event.
*/
public function onAccessDeniedException(GetResponseForExceptionEvent $event)
{
if ($event->getException() instanceof AccessDeniedHttpException) {
$admin_only = \Drupal::config('m4032404.settings')->get('admin_only');
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
if ($admin_only && !$is_admin) {
// @todo revisit this when r4032login is ready for 8.x.
if (function_exists('r4032login_redirect')) {
return r4032login_redirect();
}
} else {
$event->setException(new NotFoundHttpException());
}
}
}
示例13: build
/**
* {@inheritdoc}
*/
public function build()
{
$id = $this->configuration['message'];
// Figure out what page is being viewed.
$path = \Drupal::routeMatch()->getRouteName();
$messages = $this->options();
if ($id == 0) {
// Calculate which message to show based on a hash of the path and the
// site's private key. The message initially chosen for each page on a
// specific site will thus be pseudo-random, yet we will consistently
// display the same message on any given page on that site.
$private_key = \Drupal::service('private_key')->get();
$id = hexdec(substr(md5($path . $private_key), 0, 2)) % count($messages) + 1;
}
return array('#markup' => $messages[$id]);
}
示例14: applies
/**
* {@inheritdoc}
*/
public function applies(RouteMatchInterface $route_match)
{
$this->oUser = \Drupal::currentUser();
$aUserRoles = $this->oUser->getRoles();
$bEditorRoleActive = FALSE;
foreach ($aUserRoles as $sUserRole) {
if ($sUserRole == 'editor') {
$bEditorRoleActive = true;
}
}
$route = \Drupal::routeMatch()->getRouteObject();
$bIsAdminPath = \Drupal::service('router.admin_context')->isAdminRoute($route);
if ($bEditorRoleActive === TRUE && $bIsAdminPath === TRUE) {
return true;
}
}
示例15: submitForm
/**
* Overrides \Drupal\Core\Entity\EntityFormController::submit().
*/
public function submitForm(array &$form, FormStateInterface $form_state)
{
// Build the block object from the submitted values.
parent::submitForm($form, $form_state);
$field_collection_item = $this->entity;
// TODO: Create new revision every edit? Might be better to make it an
// option. In either case, it doesn't work as is. The default
// revision of the host isn't getting updated to point to the new
// field collection item revision.
// $field_collection_item->setNewRevision();
if (\Drupal::routeMatch()->getRouteName() == 'field_collection_item.add_page') {
$host = entity_load(\Drupal::routeMatch()->getParameter('host_type'), \Drupal::routeMatch()->getParameter('host_id'));
} else {
$host = $field_collection_item->getHost();
}
$form_state->setRedirect($host->urlInfo()->getRouteName(), $host->urlInfo()->getRouteParameters());
}