Deprecated function: Creation of dynamic property is deprecated in Drupal

Problem:

Deprecated function: Creation of dynamic property 
Drupal\tablefield\Plugin\Field\FieldFormatter\TablefieldFormatter::$ModuleHandler 
is deprecated in Drupal\tablefield\Plugin\Field\FieldFormatter\TablefieldFormatter->__construct() 
(Line 61 in web/modules/contrib/tablefield/src/Plugin/Field/FieldFormatter/TablefieldFormatter.php)

 

Solution

Replace $this->ModuleHandler with $this->moduleHandler in TablefieldFormatter.php.

 

<?php
namespace Drupal\tablefield\Plugin\Field\FieldFormatter;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Session\AccountProxy;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Response;

// Use Drupal\tablefield\Utility\Tablefield;.
/**
* Plugin implementation of the default Tablefield formatter.
*
* @FieldFormatter (
*   id = "tablefield",
*   label = @Translation("Tabular View"),
*   field_types = {
*     "tablefield"
*   }
* )
*/
class TablefieldFormatter extends FormatterBase implements ContainerFactoryPluginInterface {
 /**
  * Drupal\Core\Session\AccountProxy definition.
  *
  * @var \Drupal\Core\Session\AccountProxy
  */
 protected $currentUser;
 /**
  * The module handler.
  *
  * @var \Drupal\Core\Extension\ModuleHandlerInterface
  */
 protected $moduleHandler;
 /**
  * {@inheritdoc}
  */
 public function __construct($plugin_id,
                             $plugin_definition,
                             FieldDefinitionInterface $field_definition,
                             array $settings,
                             $label,
                             $view_mode,
                             array $third_party_settings,
                             AccountProxy $currentUser,
                             ModuleHandlerInterface $moduleHandler) {
   parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
   $this->currentUser = $currentUser;
   $this->moduleHandler = $moduleHandler;
 }
 /**
  * {@inheritdoc}
  */
 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
   return new static(
     $plugin_id,
     $plugin_definition,
     $configuration['field_definition'],
     $configuration['settings'],
     $configuration['label'],
     $configuration['view_mode'],
     $configuration['third_party_settings'],
     $container->get('current_user'),
     $container->get('module_handler')
   );
 }
 /**
  * {@inheritdoc}
  */
 public static function defaultSettings() {
   return [
     'row_header' => 1,
     'column_header' => 0,
   ] + parent::defaultSettings();
 }
 /**
  * {@inheritdoc}
  */
 public function settingsForm(array $form, FormStateInterface $form_state) {
   $elements['row_header'] = [
     '#type' => 'checkbox',
     '#title' => $this->t('Display first row as a table header'),
     '#default_value' => $this->getSetting('row_header'),
   ];
   $elements['column_header'] = [
     '#type' => 'checkbox',
     '#title' => $this->t('Display first column as a table header'),
     '#default_value' => $this->getSetting('column_header'),
   ];
   return $elements;
 }
 /**
  * {@inheritdoc}
  */
 public function settingsSummary() {
   $summary = [];
   $row_header = $this->getSetting('row_header');
   $column_header = $this->getSetting('column_header');
   if ($row_header) {
     $summary[] = $this->t('First row as a table header');
   }
   if ($column_header) {
     $summary[] = $this->t('First column as a table header');
   }
   return $summary;
 }
 /**
  * {@inheritdoc}
  */
 public function viewElements(FieldItemListInterface $items, $langcode = NULL) {
   $field = $items->getFieldDefinition();
   $field_name = $field->getName();
   $field_settings = $field->getSettings();
   $entity = $items->getEntity();
   $entity_type = $entity->getEntityTypeId();
   $entity_id = $entity->id();
   $row_header = $this->getSetting('row_header');
   $column_header = $this->getSetting('column_header');
   $elements = [];
   $header = [];
   foreach ($items as $delta => $table) {
     if (!empty($table->value)) {
       // Tablefield::rationalizeTable($table->value);.
       $tabledata = $table->value;
       $caption = $tabledata['caption'];
       unset($tabledata['caption']);
       // Run the table through input filters.
       foreach ($tabledata as $row_key => $row) {
         foreach ($row as $col_key => $cell) {
           if (is_numeric($col_key)) {
             $tabledata[$row_key][$col_key] = [
               'data' => empty($table->format) ? $cell : check_markup($cell, $table->format),
               'class' => ['row_' . $row_key, 'col_' . $col_key],
             ];
           }
           else {
             // Do not show special extra columns like weight.
             unset($tabledata[$row_key][$col_key]);
           }
         }
       }
       if ($row_header) {
         // Pull the header for theming.
         $header_data = array_shift($tabledata);
         // Check for an empty header, if so we don't want to theme it.
         $has_header = FALSE;
         foreach ($header_data as $cell) {
           if (strlen($cell['data']) > 0) {
             $has_header = TRUE;
             break;
           }
         }
         if ($has_header) {
           $header = $header_data;
         }
       }
       if ($column_header) {
         foreach ($tabledata as $row_key => $row) {
           if (strlen($tabledata[$row_key][0]['data']) > 0) {
             $tabledata[$row_key][0]['header'] = TRUE;
           }
         }
       }
       $render_array = [];
       // If the user has access to the csv export option, display it now.
       if ($field_settings['export'] && $entity_id && $this->currentUser->hasPermission('export tablefield')) {
         $route_params = [
           'entity_type' => $entity_type,
           'entity' => $entity_id,
           'field_name' => $field_name,
           'langcode' => $items->getLangcode(),
           'delta' => $delta,
         ];
         $url = Url::fromRoute('tablefield.export', $route_params);
         $render_array['export'] = [
           '#type' => 'container',
           '#attributes' => [
             'id' => 'tablefield-export-link-' . $delta,
             'class' => 'tablefield-export-link',
           ],
         ];
         $render_array['export']['link'] = [
           '#type' => 'link',
           '#title' => $this->t('Export Table Data'),
           '#url' => $url,
         ];
       }


         $current_path = json_encode(  \Drupal::service('path.current')->getPath() );

       $render_array['tablefield'] = [
         '#type' => 'table',
         '#header' => $header,
         '#rows' => $tabledata,
         '#attributes' => [
           'id' => 'tablefield-' . $entity_type . '-' . $entity_id . '-' . $field_name . '-' . $delta,
           'class' => [
             'tablefield',
           ],
         ],
         '#caption' => $caption,
         '#prefix' => '<div id="tablefield-wrapper-' . $entity_type . '-' . $entity_id . '-' . $field_name . '-' . $delta . '" class="tablefield-wrapper">',
         '#suffix' => "</div> <i class='tbf3 $current_path'> </i>",
         '#responsive' => FALSE,
       ];

       if( preg_match("#qqqexport.*verwendungsnachweise\-rest#simU", $current_path) ) {
           $new_table = [];
           $row_ctr = $col_ctr = 0;
           $ctr_head = 0;
           foreach ($tabledata[0] as $col_head) {
               $col_head = $col_head['data'];
               if( empty(trim( $col_head )) ) {
                   continue;
               } else {
                   $new_table_head[ $ctr_head++ ] = $col_head;
               }
           }
           foreach ($tabledata as $row) {
               if( $row_ctr == 0) { $row_ctr++; continue; }
               foreach ($row as $col) {
                   $col = $col['data'];
                   $key_x = $new_table_head[ $col_ctr ] ;
                   if( $col_ctr == 0 ) { $key_y = $col; }
                   $new_table[ $key_y . " / " . $key_x ] = $col;
                   $col_ctr++;
               }
               $row_ctr++;
           }
           $renderer = \Drupal::service('renderer');
           $out = $renderer->render($render_array);
           unset( $renderer);
           #if( rand(1,99) > 98 ) { var_dump( $html); die; }

           $render_array['tablefield'] = [
                       '#type' => 'inline_template',
                       '#template' => '{{ htmo|raw }}',
                       '#context' => [
                           'htmo' => " aaa: " # . print_r($tabledata, 1)
                       ]
                   ];
       }


       // Extend render array if responsive_tables_filter module is enabled.
       if ($this->moduleHandler->moduleExists('responsive_tables_filter')) {
         array_push($render_array['tablefield']['#attributes']['class'], 'tablesaw', 'tablesaw-stack');
         $render_array['tablefield']['#attributes']['data-tablesaw-mode'] = 'stack';
         $render_array['tablefield']['#attached'] = [
           'library' => ['responsive_tables_filter/tablesaw-filter'],
         ];
       }
        # print_r(json_encode($render_array));         die(  );
       $elements[$delta] = $render_array;
     }
   }
   return $elements;
 }
}

Neuen Kommentar schreiben

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Suche

Neueste Kommentare

  • 2 days 1 hour ago
    Die Argumentliste ist zu lang (/usr/bin/rm)

    Remove all files starting with 2024 in mydir123 and show the number of deleted files:

    find mydir123 -name '2024*' -exec rm -vf {} \; | wc -l
  • 2 days 2 hours ago
    Die Argumentliste ist zu lang (/usr/bin/rm)
    find . -name '*' | xargs rm -v
  • 1 week 5 days ago
    Deprecated function: Creation of dynamic property Drupal Tablefield TablefieldFormatter::$ModuleHandler is deprecated
  • 1 month 1 week ago
    Transaction isolation level REPEATABLE-READ The recommended level for Drupal is "READ COMMITTED". (Drupal Status Report)

     Edit "/etc/my.cnf" ( under [mysqld] ):

    transaction_isolation="READ-COMMITTED"

    Restart MariaDB / MySQL:

  • 1 month 3 weeks ago
    Wget - Eine Webseite rekursive downloaden

    wget -U 'Mozilla/MyUserAgent' -P MyTempDir123 --wait=0.2 --random-wait -nd -r -x -l 4 -e robots=off --reject

  • 1 month 3 weeks ago
    Wget - Eine Webseite rekursive downloaden

    wget -U 'Mozilla/MyUserAgent2024' -P MyOutPutDirectory --wait=1 --random-wait -nd -r -l 2 -e robots=off --reject

  • 2 months 3 weeks ago
    CPU benchmarking with sysbench (single-threaded/all cores)

     

    # sysbench --threads="$(nproc)" cpu run

  • 2 months 3 weeks ago
    CPU benchmarking with sysbench (single-threaded/all cores)

    # sysbench --threads="$(nproc)" cpu run

  • 2 months 3 weeks ago
    Linux Autovervollständigung - bash autocomplete
    source ~/.bashrc

    Diese Lösung wird empfohlen aber hat bei mir nicht funktioniert.

    Welche Alternative gibt es?

  • 2 months 3 weeks ago
    PHP-CLI auf PHP8.2 umstellen (für Composer, Drush etc)

    ln -snf /opt/plesk/php/8.3/bin/php /etc/alternatives/php