You are not logged in.
Bonjour,
Je suis en train de réaliser un plugin pour inventorier les éléments d'une installation de téléphonie.
J'ai un objet 'Carte', un objet 'PBX' et un objet 'Alveole'. Une classe 'Carte_Item' me permet d'intégrer ma carte soit dans un PBX, soit dans une alvéole. Tout fonctionne nickel, sauf que je n'arrive pas à afficher correctement une colonne 'Elément associé' dans la fonction rawSearchOptions() de ma classe 'Carte' pour afficher soit l'alvéole soit le PBX correspondant.
function rawSearchOptions(){
$tab = parent::rawSearchOptions();
[...]
$tab[] = [
'id' => '90001',
'table' => PluginArchiCarte_Item::getTable(),
'field' => 'items_id',
'name' => _n('Associated item', 'Associated items', Session::getPluralNumber()),
'datatype' => 'specific',
'additionalfields' => ['itemtype'],
'joinparams' => [
'jointype' => 'child',
]
];
$tab[] = [
'id' => '90002',
'table' => PluginArchiCarte_Item::getTable(),
'field' => 'itemtype',
'name' => _n('Associated item type', 'Associated item types', Session::getPluralNumber()),
'datatype' => 'itemtypename',
'joinparams' => [
'jointype' => 'child',
],
'itemtype_list' => 'carte_types',
];
return $tab;
}
J'ai ajouté comme la doc l'indique :
static function getSpecificValueToDisplay($field, $values, array $options = []){
if (!is_array($values)) {
$values = [$field => $values];
}
switch ($field) {
case 'items_id':
if (isset($values['itemtype'])) {
return Dropdown::getDropdownName(
getTableForItemType($values['itemtype']),
$values[$field]
);
}
break;
}
return parent::getSpecificValueToDisplay($field, $values, $options);
}
static function getSpecificValueToSelect($field, $name = '', $values = '', array $options = [])
{
if (!is_array($values)) {
$values = [$field => $values];
}
$options['display'] = false;
switch ($field) {
case 'items_id':
if (isset($values['itemtype']) && !empty($values['itemtype'])) {
$options['name'] = $name;
$options['value'] = $values[$field];
return Dropdown::show($values['itemtype'], $options);
}
break;
}
return parent::getSpecificValueToSelect($field, $name, $values, $options);
}
Pour résultat, j'obtiens l'items_id (qui correspond bien à l'ID de mon alvéole ou de mon PBX) mais je souhaite afficher le nom de l'élément. Je pense que rien ne passe dans le case de ma fonction getSpecificValueToDisplay($field, $values, array $options = []). Pouvez-vous m'éclairer svp je suis toute seule sur le projet et cela fait des jours que je cherche ?
Last edited by virgin21800 (2022-06-02 14:22:01)
Offline
Je me réponds à moi-même pour ceux qui cherchent : faire un hook giveItem() pour éviter l'erreur sur le plugin.
Last edited by virgin21800 (2022-06-14 10:43:57)
Offline