Bonjour à tous,
Je suis en train de développer un petit module qui me permettrait d’exposer les données d’un table dans le module views.
Je vais essayer d’expliquer le plus clairement possible mon problème.
J’ai 3 tables :
- - node (nid)
- - filenode (fid, nid)
- - files (fid, filepath, filename)
Vous l’aurez compris la table filenode est l’intermédiaire entre la table files et node
via hook hook_views_data :
1er cas (où ça fonctionne) je veux récupérer la valeur de filenode.fid
<?php
function filenode_view_views_data()
{
$data['filenode']['table']['group'] = t('FileNode');
$data['filenode']['table']['join'] = array(
'node' => array (
'left_field' => 'nid',
'field' => 'nid',
),
);
$data['filenode']['fid'] = array(
'title' => t('FID'),
'help' => t('file id'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
return $data;
}
?>2ème cas (où ça ne fonctionne pas) :
J’essaie de récupérer les données de la table files
<?php
function filenode_view_views_data()
{
$data['filenode']['table']['group'] = t('FileNode');
$data['filenode']['table']['join'] = array(
'files' => array (
'left_field' => 'fid',
'field' => 'fid',
),
'node' => array (
'left_field' => 'nid',
'field' => 'nid',
),
);
$data['filenode']['fid'] = array(
'title' => t('FID'),
'help' => t('file id'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
$data['filenode']['filename'] = array(
'title' => t('Filename'),
'help' => t('This is the filename.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
$data['filenode']['filepath'] = array(
'title' => t('Filepath'),
'help' => t('This is the filepath.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
return $data;
}
?>J’ai essayé de suivre et comprendre les liens suivants :
- http://groups.drupal.org/node/17236
-http://views-help.doc.logrus.com/help/views/api-tables
Mais rien n’y fait, la requête générée n’est pas correcte :
user warning: Unknown column 'filenode.filename' in 'field list' query: SELECT node.nid AS nid, node.title AS node_title, filenode.fid AS filenode_fid, filenode.filename AS filenode_filename, filenode.filepath AS filenode_filepath FROM node node LEFT JOIN filenode filenode ON node.nid = filenode.nid LIMIT 0, 10 in D:\projects\drupal\sites\all\modules\views\includes\view.inc on line 765.Quelqu’un aurait une idée/une piste pour m’aider ?
Merci,
Bonne journée,
Philippe
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Va plutôt voir du côté de Table Wizard.
Attention à ne pas créer des modules qui existent déjà !
DRUPALONS.FR : lisez-nous et testez notre générateur de code, ou les flux drupaliens.
emerya
1166
Merci pour votre intervention ! Je vais aller voir du côté de Table wizard.
Sinon pour mon information personnelle : vous avez peut-être une idée de ce qui cloche dans mon code ?
Merci,
Phil-
Philalawst
5