Jak przekazać filtry kontekstowe do widoku za pośrednictwem usług


11

Mam widok, który akceptuje filtr kontekstowy w celu zwrócenia poprawnych wyników. Korzystam z usług 3 i Drupal 7. Jestem w stanie utworzyć punkt końcowy i pobrać widok za pośrednictwem usług. Wygląda jednak na to, że nie można przekazać filtru kontekstowego, ponieważ services_views ma tylko metodę pobierania (która korzysta z GET). Czy ktoś wie, czy jest to możliwe, a jeśli tak, to jak to zrobić?

Odpowiedzi:


14

przekaż swój filtr w następujący sposób: yourendpoint? args [0] = wartość i args [1] = wartość

Powodzenia


3

Dopóki filtry są widoczne w widoku, nazwy pól są dostępne jako filtry kontekstowe. Na przykład ujawnij NID na liście filtrów i możesz to zrobić

GET /endpoint?nid=5

1
To rozwiązanie działa w przypadku odsłoniętych kryteriów filtrów. Według mojej najlepszej wiedzy filtry kontekstowe nie działają, ale jest to wyjątkowe obejście.
Brent,

3

To jest pytanie, na które już udzielono odpowiedzi, ale innym osobom przeglądającym tutaj w przyszłości, zaleciłbym skorzystanie i przejrzenie dokumentacji w widokach usług . Objaśnia, jak przekazywać filtry kontekstowe wraz z szeregiem innych możliwych argumentów, a także wideo demonstracyjne i pokazuje przykłady.


1
Po przeprowadzeniu dalszych badań wydaje się, że nie jest to możliwe bez modyfikacji services_views.
user379468

2

Jeśli musisz użyć wielu wartości w filtrze kontekstowym, sugeruję wykonanie następujących czynności:

  • Utwórz swój filtr kontekstowy (w moim przypadku: nid)
  • Kliknij „Podaj wartość domyślną” i ustaw typ na Filtr kontekstowy PHP oczekujący łańcucha z wieloma wartościami oddzielonymi znakiem + lub przecinkiem.

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

  • W sekcji „Więcej” zaznacz „Zezwalaj na wiele wartości”.

Teraz, dzwoniąc do usługi, podaj w ten sposób filtry kontekstowe: ... / my_service? Nid = 1 | 2 | 3


2

W przypadku tych, którzy nadal mają problemy, upewnij się, że po dodaniu filtra do widoku w ustawieniach dla określonego pola istnieje identyfikator filtru. Musi to być argument przekazany do kwerendy w dwóch formatach wymienionych w dokumentacji widoków usług.


Walczyłem z tym, wcale nie intuicyjnie, ponieważ wyobrażałem sobie, że tytuł może być używany jako klucz filtru. Dziękuję Ci!
donnadulcinea

1

Udało mi się uzyskać filtr kontekstowy z usługami Drupal poprzez: 1) włączenie modułu „Wyświetlenie zapytania o filtr kontekstowy” ( https://drupal.org/project/views_contextual_filter_query ) 2) przekazanie filtru kontekstowego przez adres URL jako kwerendę.

W filtrze kontekstowym będziesz musiał wybrać „GDY WARTOŚĆ FILTRA NIE JEST DOSTĘPNA” -> „Parametr zapytania z adresu URL. Będziesz wtedy mógł dodać nazwę parametru, której będziesz używać w adresie URL. Pozwala to również na użycie + i | znaki do wyboru wielu kryteriów filtrowania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.