Puncte:0

Formatator de câmp personalizat cu blob, valoarea întotdeauna goală

drapel lc

Am următorul câmp personalizat:

/**
 * Implementarea pluginului pentru tipul de câmp „price_table”.
 *
 * @FieldType(
 * id = „tabel_preț”,
 * default_widget = "price_table_widget",
 * default_formatter = "price_table_formatter",
 * )
 */
clasa PriceTable extinde FieldItemBase {

  funcție publică statică mainPropertyName(): șir {
    valoare returnată';
  }

  schema funcției statice publice (FieldStorageDefinitionInterface $field_definition): matrice {
    întoarcere [
      'coloane' => [
        „valoare” => [
          'type' => 'blob',
          'size' => 'mare',
          'serialize' => TRUE,
        ],
      ],
    ];
  }

  funcția publică statică propertyDefinitions(FieldStorageDefinitionInterface $field_definition): matrice {
    $properties['value'] = MapDataDefinition::create()
      ->setLabel(t('Date tabel'));

    returnează $proprietăți;
  }

  funcția publică setValue($valori, $notify = TRUE) {
    if (isset($values) && !empty($values['tabel'])) {
      $values['value'] = $values['table'];
      unset($valori['tabel']);
      parent::setValue($valori, $notify);
    }
  }

  funcția publică este goală(): bool {
    încerca {
      $valoare = $this->get('valoare')->getValue();
      dpm($valoare); //<<<
      returnează !is_array($valoare) || gol ($valoare);
    } catch (MissingDataException | InvalidArgumentException $e) {
      returnează FALSE;
    }
  }

}

cu widget-ul corespunzător (folosind un element de formular de tabel) și formatator prezent. Editarea merge bine, datele serializate sunt stocate în înregistrarea bazei de date a entității mele. Cu toate acestea, când vine vorba de formatator, nu afișează nimic pentru că este gol() de mai sus primește întotdeauna o valoare goală și revine FALS. Blobul este bine stocat (mulțumită lui setValue() mai sus) dar nu este preluat de câmp.

Ce îmi lipsește aici?

Puncte:0
drapel lc

Nu face nimic... :-)

funcția publică este goală(): bool {
  încerca {
    $valoare = $this->getValue();

Atat de simplu.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.