Am un tip de câmp personalizat pe care îl creez cu un modul personalizat. Este un câmp de text simplu în care utilizatorul introduce un șir. Doresc să păstrez două copii ale acestui câmp:
- Valoarea exactă a șirului așa cum a fost introdusă de utilizator.
- O valoare sigură a aceluiași șir.
Iată cum creez câmpul:
clasa MyItem extinde FieldItemBase {
/**
* {@inheritdoc}
*/
schema funcției statice publice (FieldStorageDefinitionInterface $field_definition) {
întoarcere [
'coloane' => [
„valoare” => [
'type' => 'text',
'dimensiune' => 'minuscul',
„nu nul” => FALSE,
],
'safevalue' => [
'type' => 'text',
'dimensiune' => 'minuscul',
„nu nul” => FALSE,
],
],
];
}
â¦
}
Presupun că ar trebui să generez un valoare de siguranță
de sfoară în hook_node_presave()
și să intri cumva în entitate de acolo (dar corectările la aceste presupuneri sunt binevenite).
Nu am nicio problemă să obțin valoarea șirului așa cum a fost introdusă de utilizator și să calculez o valoare sigură:
$valoare = $entity->field_myfield->getString();
$safevalue = makeSafe($valoare);
Dar nu știu cum să obțin $safevalue
stocate în baza de date.
Editați | ×
Văd că aceasta are două răspunsuri aproape identice. Ambele funcționează bine dacă cardinalitatea câmpului este una, așa că le-am votat pozitiv pe ambele. Deoarece nu le pot accepta pe amândouă, l-am acceptat pe cel de la apaderno pentru detalii suplimentare despre propertyDefinitions()
.
Încă nu reușesc să fac acest lucru să funcționeze cu un câmp cu mai multe valori, dar cred că probabil că trebuie să fie o întrebare separată.