Como passar filtros contextuais para uma visualização por meio de serviços

11

Eu tenho uma visão que aceita um filtro contextual para retornar os resultados corretos. Estou usando os Serviços 3 e o Drupal 7. Sou capaz de criar um terminal e recuperar a exibição por meio de serviços. Mas parece que não há como passar o filtro contextual, porque services_views possui apenas um método de recuperação (que usa GET). Alguém sabe se isso é possível e, em caso afirmativo, como isso pode ser feito?

user379468
fonte

Respostas:

14

passe seu filtro da seguinte maneira: seu endpoint? args [0] = valor & args [1] = valor

Boa sorte

Bassel Alkhateeb
fonte
3

Enquanto os filtros estiverem expostos na visualização, os nomes de campo estarão disponíveis como filtros contextuais. Por exemplo, exponha o NID na lista de filtros e você pode fazer

GET /endpoint?nid=5
cybertoast
fonte
1
Esta solução funciona para critérios de filtro expostos. De acordo com o meu conhecimento, os filtros contextuais não funcionam, mas esta é uma solução excelente.
Brent
3

Esta é uma pergunta já respondida, mas para outras pessoas que navegarem aqui no futuro, eu recomendaria usar e dar uma olhada na documentação em Exibições de Serviços . Ele explica como passar filtros contextuais junto com vários outros argumentos possíveis, e tem um vídeo de demonstração e mostra exemplos.

cdmo
fonte
1
Depois de fazer mais pesquisas, parece que isso não é possível sem a modificação de services_views.
user379468
2

Se você precisar usar vários valores em seu filtro contextual, sugiro fazer o seguinte:

  • Crie seu filtro contextual (no meu caso: nid)
  • Clique em "Fornecer um valor padrão" e defina o tipo como Filtro Contextual do PHP. Espere uma sequência com vários valores separados por um + ou uma vírgula.

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

  • Na seção "Mais", marque "Permitir vários valores".

Agora, ao chamar seu serviço, forneça seus filtros contextuais dessa maneira: ... / my_service? Nid = 1 | 2 | 3

Ebpo
fonte
2

Para aqueles que ainda têm problemas, verifique se, ao adicionar um filtro à exibição, nas configurações do campo especificado, existe um identificador de filtro. Esse precisa ser o argumento transmitido para a cadeia de consulta nos dois formatos listados na documentação de Exibições de Serviços.

Marca
fonte
Eu estava lutando com isso, nada intuitivo desde que imaginei que o título seria usado como uma chave de filtro. Obrigado!
Donnadulcinea 16/10/2015
1

Consegui obter um filtro contextual com os Serviços Drupal: 1) ativando o módulo 'Consulta de filtro contextual de visualizações' ( https://drupal.org/project/views_contextual_filter_query ) 2) passando o filtro contextual pela URL como uma string de consulta .

No filtro contextual, você terá que selecionar 'QUANDO O VALOR DO FILTRO NÃO ESTÁ DISPONÍVEL' -> 'Parâmetro de consulta no URL. Você poderá adicionar o nome do parâmetro que usará na URL. Isso também permite que você use os botões + e | caracteres para selecionar vários critérios de filtro.

thomaschall
fonte