Як передати контекстні фільтри перегляду через сервіси


11

У мене є погляд, який приймає контекстний фільтр, щоб повернути правильні результати. Я використовую Служби 3 та Drupal 7. Я можу створити кінцеву точку та відновити представлення даних за допомогою служб. Але здається, що немає можливості пройти контекстний фільтр, оскільки services_views має лише метод отримання (для якого використовується GET). Хтось знає, чи можливо це, і якщо так, як це можна зробити?

Відповіді:



3

Поки фільтри виставлені у поданні, назви полів доступні у вигляді контекстних фільтрів. Наприклад, виставити NID у списку фільтрів, і ви можете це зробити

GET /endpoint?nid=5

1
Це рішення працює за відкритими критеріями фільтра. Наскільки мені відомо, контекстуальні фільтри не працюють, але це непересічне рішення.
Brent

3

Це вже відповідне запитання, але для інших користувачів, які переглядають тут у майбутньому, я б рекомендував використовувати та ознайомитись із документацією на службі Перегляди послуг . У ньому розказано, як передавати контекстні фільтри разом з купою інших можливих аргументів, і в ньому є демонстраційне відео та показані приклади.


1
Після проведення подальших досліджень виявляється, що це неможливо без зміни служб_перегляду.
користувач379468

2

Якщо вам доведеться використовувати кілька значень у вашому контекстному фільтрі, пропоную зробити наступне:

  • Створіть свій контекстний фільтр (у моєму випадку: nid)
  • Клацніть на "Надати значення за замовчуванням" і встановіть тип як PHP Контекстуальний фільтр очікуйте рядок з кратним значенням, розділеним знаком + або комою.

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

  • У розділі "Детальніше" поставте прапорець "Дозволити кілька значень".

Тепер, зателефонувавши до вашої служби, надайте контекстні фільтри таким чином: ... / my_service? Nid = 1 | 2 | 3


2

Для тих, хто має проблеми, переконайтеся, що, коли ви додаєте фільтр до подання, під налаштуваннями вказаного поля буде ідентифікатор фільтра. Це має бути аргументом, переданим у рядок запитів у двох форматах, перелічених у документації служб Перегляди.


Я боровся з цим, зовсім не інтуїтивно, оскільки уявляв, що заголовок використовуватиметься як ключ фільтра. Дякую!
donnadulcinea

1

Мені вдалося отримати контекстний фільтр за допомогою Drupal Services шляхом: 1) включення модуля "Перегляд контекстного запиту фільтру" ( https://drupal.org/project/views_contextual_filter_query ) 2), передаючи контекстний фільтр через URL у вигляді запиту.

У контекстному фільтрі вам доведеться вибрати "КОЛИ ЗНАЧЕННЯ ФІЛЬТРА НЕ ДОСТУПНА" -> "Параметр запиту з URL-адреси. Після цього ви зможете додати ім'я параметра, яке ви будете використовувати в URL. Це також дозволяє використовувати + і | символів для вибору декількох критеріїв фільтра.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.