Last active
March 22, 2018 13:47
-
-
Save PatrickTC/68a8294983876db426c4e333ff28fcbf to your computer and use it in GitHub Desktop.
Drupal 8 stuff that's seemingly impossible to remember and FUN!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Shamelessly borrowed from https://gist.github.com/r-daneelolivaw/b420b3dc0c40a6cacf76 | |
// Autoload Url and Link classes. | |
use Drupal\Core\Url; | |
use Drupal\Core\Link; | |
/** | |
* External link | |
*/ | |
$url = Url::fromUri('https://colorfield.be'); | |
$link = Link::fromTextAndUrl(t('Colorfield'), $url); | |
$link = $link->toRenderable(); | |
$link['#attributes'] = array('class' => array('external')); | |
$output = render($link); | |
/** | |
* Internal route | |
*/ | |
$url = Url::fromRoute('contact.site_page'); // a route provided in .routing.yml | |
$link = Link::fromTextAndUrl(t("Contact"), $url); | |
$link = $link->toRenderable(); | |
$link['#attributes'] = array('class' => array('internal')); | |
$output = render($link); | |
/** | |
* Entities, e.g. node | |
* @see http://stackoverflow.com/questions/35397009/creating-a-link-from-node-id-in-drupal-8 | |
*/ | |
$options = ['absolute' => TRUE]; | |
$url = Url::fromRoute('entity.node.canonical', ['node' => 1], $options); | |
//$url = $url->toString(); | |
$link = Link::fromTextAndUrl("Node title", $url); | |
$link = $link->toRenderable(); | |
$link['#attributes'] = array('class' => array('internal')); | |
$output = render($link); | |
/** | |
* Internal path | |
*/ | |
$path = '/my/path'; // prefixed with / | |
$url = Url::fromUri('internal:'.$path); | |
$link = Link::fromTextAndUrl($label, $url); | |
$link = $link->toRenderable(); | |
$link['#attributes'] = array('class' => array('internal')); | |
$output = render($link); | |
/** | |
* Anchor (current page) | |
*/ | |
$url = Url::fromRoute('<current>', array(), array('fragment' => $name)); | |
$link = Link::fromTextAndUrl($label, $url); | |
$link = $link->toRenderable(); | |
$output = render($link); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Herein lies horrors of the likes that no one has ever encountered before. | |
Take a deep breath and scroll down to reveal the code crapiness (or 1337ness) that will help one circumnavigate the open code ocean that is Drupal 8, 9, 10.. etc. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
\Drupal::logger('your_lame_module')->notice('@type: %title.', | |
array( | |
'@type' => "Massive Error", | |
'%title' => "<pre>".print_r($error_array_or_text, true)."</pre>", | |
)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Symfony\Component\HttpFoundation\RedirectResponse; | |
$redirect = new RedirectResponse(Url::fromRoute('cat_module.route_name', ['route_arg' => 'a_value'])->toString()); | |
$redirect->send(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Implements hook_form_FORM_ID_alter(). | |
* | |
* @param $form | |
* @param FormStateInterface $form_state | |
* @param $form_id | |
*/ | |
function MODULE_form_user_login_form_alter(&$form, FormStateInterface $form_state, $form_id) { | |
// Add another submit handler | |
$form['#submit'][] = '_MODULE_user_login_form_submit'; | |
} | |
/** | |
* Redirect submit handler. We want the user to be redirected to the previous page after login | |
* | |
* @param $form | |
* @param FormStateInterface $form_state | |
*/ | |
function _MODULE_user_login_form_submit($form, FormStateInterface $form_state) { | |
$previousUrl = \Drupal::requestStack()->getParentRequest()->getUri(); | |
$response = new TrustedRedirectResponse($previousUrl); | |
$form_state->setResponse($response); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Implements hook_views_pre_view(). | |
*/ | |
function HOOK_views_pre_view(ViewExecutable $view, $display_id, array &$args) { | |
if ($view->id() == 'view_id') { | |
switch ($display_id) { | |
case 'block_1': | |
// Get exposed filters value | |
$filter_input = $view->getExposedInput(); | |
// Field transfer data area. | |
$filter_input['field_b'] = $filter_input['field_a']; | |
$view->setExposedInput($filter_input); | |
break; | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
State API is AWESOME because its super handy! | |
Get a value: | |
$val = \Drupal::state()->get('key'); | |
Get multiple key/value pairs: | |
$pairs = \Drupal::state()->getMultiple($keys); | |
Set a value: | |
\Drupal::state()->set('key','value'); | |
Set multiple values: | |
\Drupal::state()->setMultiple($keyvalues); | |
Delete a value: | |
\Drupal::state()->delete('key'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment