web-dev-qa-db-fra.com

Comment passer des filtres contextuels à une vue via des services

J'ai une vue qui accepte un filtre contextuel afin de retourner les résultats corrects. J'utilise Services 3 et Drupal 7. Je peux créer un point de terminaison et récupérer la vue via les services. Mais il semble qu'il n'y ait aucun moyen de passer le filtre contextuel, car services_views ne dispose que d'une méthode de récupération (qui utilise GET). Quelqu'un sait-il si cela est possible et si oui, comment cela peut-il être fait?

11
user379468

passez votre filtre comme suit: votreendpoint? args [0] = valeur & args [1] = valeur

Bonne chance

14
Bassel Alkhateeb

Tant que les filtres sont exposés dans la vue, les noms de champs sont disponibles en tant que filtres contextuels. Par exemple, exposez NID dans la liste des filtres et vous pouvez faire

GET /endpoint?nid=5
3
cybertoast

Il s'agit d'une question déjà répondue, mais pour d'autres personnes qui naviguent ici à l'avenir, je recommanderais d'utiliser et de consulter la documentation à Vues des services . Il explique comment passer des filtres contextuels avec un tas d'autres arguments possibles, et il a une vidéo de démonstration et montre des exemples.

3
cdmo

Pour ceux d'entre vous qui ont encore des problèmes, assurez-vous que lorsque vous ajoutez un filtre à la vue, sous les paramètres du champ spécifié, il y a un identificateur de filtre. Il doit s'agir de l'argument transmis à la chaîne de requête dans les deux formats répertoriés dans la documentation des vues de services.

2
Mark

Si vous devez utiliser plusieurs valeurs dans votre filtre contextuel, je vous suggère de procéder comme suit:

  • Créez votre filtre contextuel (dans mon cas: nid)
  • Cliquez sur "Fournir une valeur par défaut" et définissez le type sur PHP Le filtre contextuel attend une chaîne avec plusieurs valeurs séparées par un + ou une virgule.

return str_replace("|", "+", $_GET['nid']);

  • Dans la section "Plus", cochez "Autoriser plusieurs valeurs".

Maintenant, lorsque vous appelez votre service, fournissez vos filtres contextuels de cette façon: .../mon_service? Nid = 1 | 2 | 3

2
Ebpo

J'ai pu obtenir un filtre contextuel avec Drupal Services en: 1) activant le module 'Vues Contextual Filter Query' ( https://drupal.org/project/views_contextual_filter_query ) 2) en passant le filtre contextuel via l'URL comme chaîne de requête.

Dans le filtre contextuel, vous devrez sélectionner 'QUAND LA VALEUR DU FILTRE IS NON DISPONIBLE' -> 'Paramètre de requête à partir de l'URL. Vous pourrez ensuite ajouter le nom du paramètre que vous utiliser dans l'URL. Cela vous permet également d'utiliser les caractères + et | pour sélectionner plusieurs critères de filtre.

1
thomaschall