Skip to content

Instantly share code, notes, and snippets.

View mattschaff's full-sized avatar

Matt Schaff mattschaff

View GitHub Profile
@mattschaff
mattschaff / example.theme.php
Created December 12, 2019 22:55
Drupal 8: Add unique ID to theme suggestions for form elements
<?php
/**
* @file
*/
/**
* Implements hook_form_alter()
*/
// Add unique form ID to theme suggestions for form elements.
@mattschaff
mattschaff / MigrateEntityReference.php
Created December 12, 2019 22:48
Drupal 8: Drush 9 command to migrate an entity reference from a paragraph field to a node field
<?php
/*
* Place this file at src/Commands/MigrateEntityReference.php in your custom module directory.
*/
namespace Drupal\exmample\Commands;
use Drupal\Core\Entity\EntityFieldManagerInterface;
use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
@mattschaff
mattschaff / ExampleCrudAdminForm.php
Created December 12, 2019 22:31
Drupal 8: CRUD admin form (AJAX add, delete)
<?php
namespace Drupal\example\Form;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
@mattschaff
mattschaff / MyModuleQueueEvent.php
Created April 4, 2019 13:45
Drupal 8: Custom queue worker processed by cron
<?php
/**
* @file
* Contains \Drupal\my_module\Plugin\QueueWorker\MyModuleQueueEvent.
*/
namespace Drupal\my_module\Plugin\QueueWorker;
use Drupal\Core\Queue\QueueWorkerBase;
@mattschaff
mattschaff / CustomAdminSettingService.php
Created April 4, 2019 13:37
Drupal 8: Custom service that gets and sets admin variables
<?php
namespace Drupal\my_module\Service;
use Drupal\Core\Database\Driver\mysql\Connection;
/**
* Service that peforms administration work for My Module
*
@mattschaff
mattschaff / remove_view_duplicates.includes.php
Created April 3, 2019 14:43
Drupal 8: Remove duplicate records in view
<?php
/**
* Implements hook_preprocess_views_view
*/
function my_module_preprocess_views_view(&$vars){
// Only use unique IDs for view.
// Use this code for views with Better Exposed Filters.
if ($vars['view']->id() === 'view_name_bef') {
$rows = [];
@mattschaff
mattschaff / checkbox_default_views.includes.php
Created April 3, 2019 14:14
Drupal 8: Set default value of checkbox field in views exposed form with AJAX
<?php
use Drupal\Core\Form\FormStateInterface;
/**
* Implements hook_form_alter()
*/
function my_module_form_alter(&$form, FormStateInterface $form_state, $form_id) {
switch ($form_id) {
case 'views_exposed_form':
@mattschaff
mattschaff / redirect_with_warning.includes.php
Created April 3, 2019 14:10
Drupal 8: Redirect with a warning message
<?php
use Symfony\Component\HttpFoundation\RedirectResponse;
/**
* Redirects with warning message
*
* When you need to redirect user upon a page load in procedural code.
* Otherwise, use the Controller response or ...
* ... $form_state->setRedirect('routing_machine_name'); return;
@mattschaff
mattschaff / view_fields_role_access.includes.php
Last active April 4, 2019 13:56
Drupal 8: Access view fields based on user role
<?php
use Drupal\views\ViewExecutable;
/**
* Implements hook_views_pre_view().
*/
function my_module_views_pre_view(ViewExecutable $view, $display_id, array &$args) {
// Control access to specific view fields based on user role.
if ($view->id() == 'view_machine_name') {
@mattschaff
mattschaff / change_view_page_title.includes.php
Last active April 4, 2019 13:56
Drupal 8: Dynamically set page title of view page display
<?php
use Drupal\views\ViewExecutable;
/**
* Implements hook_views_post_render().
*/
function my_module_views_post_render(ViewExecutable $view, &$output) {
if ($view->id() == 'view_machine_name') {
// Set title based on the user name of the current user profile.