web-dev-qa-db-ja.com

サービスを介してコンテキストフィルターをビューに渡す方法

正しい結果を返すためにコンテキストフィルターを受け入れるビューがあります。サービス3とDrupal 7.を使用しています。7。エンドポイントを作成し、サービスを介してビューを取得できます。しかし、コンテキストフィルターを渡す方法がないようです。 services_viewsには、取得メソッド(GETを使用)しかありません。これが可能かどうか、また可能であればどのように実行できるかはだれでも知っていますか?

11
user379468

次のようにフィルターを渡します:yourendpoint?args [0] = value&args [1] = value

幸運を

14

フィルターがビューで公開されている限り、フィールド名はコンテキストフィルターとして使用できます。たとえば、フィルターリストでNIDを公開すると、次のことができます

GET /endpoint?nid=5
3
cybertoast

これは既に回答済みの質問ですが、今後ここで閲覧する他の人には、 Services Views のドキュメントを使用して確認することをお勧めします。コンテキストフィルターを他の多くの可能な引数と共に渡す方法を説明し、デモビデオと例を示します。

3
cdmo

問題が解決しない場合は、ビューにフィルターを追加するときに、指定したフィールドの設定の下にフィルターIDがあることを確認してください。これは、サービスビューのドキュメントに記載されている2つの形式でクエリ文字列に渡される引数である必要があります。

2
Mark

コンテキストフィルターで複数の値を使用する必要がある場合は、次のことをお勧めします。

  • コンテキストフィルターを作成します(私の場合はnid)。
  • 「デフォルト値を指定」をクリックし、タイプをPHPとして設定します。コンテキストフィルターは、+またはコンマで区切られた複数の値を持つ文字列を予期します。

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

  • [その他]セクションで、[複数の値を許可する]をオンにします。

サービスを呼び出すときに、コンテキストフィルターを次のように指定します。../my_service?nid = 1 | 2 | 3

2
Ebpo

Drupal Services by:1) 'Views Contextual Filter Query'モジュールを有効にしてコンテキストフィルターを取得できました( https://drupal.org/project/views_contextual_filter_query )2)URLを介してコンテキストフィルターをクエリ文字列として渡します。

コンテキストフィルターで、「フィルター値IS NOT AVAILABLE '->' URLからのクエリパラメーター」を選択する必要があります。これにより、パラメーター名を追加できるようになります。 URLで使用します。これにより、+および|文字を使用して複数のフィルター基準を選択することもできます。

1
thomaschall