Submitted by MarcSeb on
Bonjour,
Je possède un champ "nodereference" d'un type de contenu "personnalité" avec lequel j'utilise une vue "liste_personnalite" afin de pouvoir personnaliser le tri/affichage.
J'ai réussi il y a peu de temps à modifier la requête de la vue afin de pouvoir chercher à la fois le nom ou le prenom d'une personnalité avec un code ressemblant à ça :
<?php
function mymodule_views_query_alter(&$view, &$query) {
if ($view->name == 'my_custom_view' && $view->current_display == 'content_references_1') {
// Remove the original title constraint
unset($query->where[0]['clauses'][2]);
// Duplicate the argument (keyword to search for), so
// it is passed to both the title and the other field
$query->where[0]['args'][] = $query->where[0]['args'][1];
// Add the custom where clause
$view->query->add_where(0, "(node.title LIKE '%%%s%%' OR node_data_field_perso_prenom.field_perso_prenom_value LIKE '%%%s%%')");
}
}
?>
L'autocomplétion fonctionne donc très bien, cependant, lors de l'enregistrement du noeud, j'ai le message d'erreur suivant :
"Personnalité : ce contenu ne peut être référencé."
Je ne vois pas vraiment d'où peut venir le problème car la requête fonctionne bien...
Merci d'avance pour votre aide
Car au moment de la
Permalien Soumis par emerya le 31 Janvier, 2012 - 18:06
Car au moment de la validation il va vérifier que l'élément fait bien partie de la vue, et il semblerait que ton query_alter (qui entre nous n'est pas trop recommandé) n'est pas réappelé.
Met à jour ta version de Views pour D6 (Views 3) qui gère les "OR", ce sera plus simple...