Am o entitate personalizată cu un câmp care este definit după cum urmează.
$fields['file'] = BaseFieldDefinition::create('file')
->setDescription('Referință la tipul de entitate fișier principal încorporat.')
->setLabel('Fișier')
->setRequired(TRUE)
->setSetting('file_extensions', 'pdf rtf doc docx')
->setSetting('max_filesize', '20MB')
->setSetting('description_field', TRUE)
->setDisplayOptions('form', ['type' => 'fișier'])
->setDisplayOptions('view', ['type' => 'file']);
Nu am nicio problemă să ajung la câmpurile celor referiți Fişier
entitate din instanțe de tipul meu de entitate. Deci, de exemplu, aceste linii funcționează conform așteptărilor.
$filename = $my_entity->file->entity->filename->value;
$username = $my_entity->file->entity->uid->entity->name->value;
Când încerc să folosesc câmpurile celor referite Fişier
entitate cu a TableSort
, pe care vreau să îl conectez la o interogare de entitate pe tipul meu personalizat de entitate, codul aruncă o excepție.
$header['nume'] = [
'data' => 'Numele fișierului',
'field' => 'file.entity.filename',
'specifier' => 'file.entity.filename',
];
$header['utilizator'] = [
'data' => 'Încărcat de',
'field' => 'file.entity.uid.entity.name',
'specifier' => 'file.entity.uid.entity.name',
];
// â¦
$interogare->tableSort($header);
Excepție PHP neprinsă Drupal\Core\Entity\Query\QueryException: „„fișierul” nu a fost găsit”
Pentru sintaxa lui $header
matrice pe care mă bazez în mare măsură pe indicii de la care am primit Tablesort cu EntityQuery, în care Berdir recomandă să ne uităm la sarcină()
și buildHeader()
metode ale UserListBuilder
clasă. Din păcate, acel exemplu pare să folosească valorile câmpurilor care sunt stocate direct în tabelul de bază, așa că mă întorc la presupunerea că, deoarece ne aflăm în terenul de interogare de entitate, aceeași sintaxă descrisă în QueryInterface::condition()
ar fi de așteptat.
M-am uitat la o serie de probleme deschise, cum ar fi Sortarea tabelului ignoră „câmpul”, adaugă întotdeauna titlul antetului ca parametru de interogare de comandă și Curățare de sortare a mesei, dar nu am văzut nimic care să arunce o lumină asupra problemei.