Urmând tutorialele și documentația, pot crea un câmp personalizat care acceptă o singură valoare șir. Totuși, ceea ce aș dori să realizez este o listă personalizată (de preferință casete de selectare
tip) unde un utilizator poate selecta diferite opțiuni. Am încercat să caut în core/modules/options schema.yml și copierea setărilor de stocare îmi dă aceleași rezultate. Primesc eroarea Această valoare ar trebui să fie de tipul primitiv corect.
Acestea sunt ceea ce cred că sunt bucățile relevante de cod pe care le am în prezent:
in fieldtype/
schema funcției statice publice (FieldStorageDefinitionInterface $field_definition) {
întoarcere [
// coloanele conține valorile pe care câmpul le va stoca
'coloane' => [
„valoare” => [
'type' => 'text',
'size' => 'normal',
„nu nul” => FALSE,
'serialize' => TRUE
],
],
'indexuri' => [
'valoare' => ['valoare'],
],
];
}
În FieldWidget/
funcția publică formElement(FieldItemListInterface $articole, $delta, matrice $element, matrice &$form, FormStateInterface $form_state) {
$sglists = ['1' => 'a', '2' => 'b'];
$element['valoare'] = $element + [
'#type' => 'casete de selectare',
'#options' => $sglists,
'#empty_value' => '',
'#default_value' => (isset($items[$delta]->value) && isset($sglists[$items[$delta]->value])) ? $articole[$delta]->valoare: NULL,
'#description' => t('Selectați o listă Sendgrid'),
];
returnează $element;
}
în schema.yml
field.storage_settings.sendgridlists:
etichetă: „Sendgrid Lists”
tip: cartografiere
cartografiere:
listele_selectabile:
tip: secvență
etichetă: „Liste selectabile”
secvenţă:
tip: sfoară
Sunt destul de sigur că problema mea vine de la schema.yml, dar nu înțeleg cu adevărat cum să transform asta dintr-o singură valoare într-o listă cu mai multe valori. (similar cu core/module/opțiuni)
Orice ajutor este foarte apreciat, inclusiv orice link-uri către modulele de contrib existente care creează cu succes o personalizare casete de selectare
tip de câmp la care pot face referire.