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


11

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

回答:



3

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

GET /endpoint?nid=5

1
このソリューションは、公開されたフィルター基準に対して機能します。私の知る限りでは、コンテキストフィルターは機能しませんが、これは優れた回避策です。
ブレント

3

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


1
さらに調査したところ、services_viewsを変更しないとこれは不可能であるようです。
user379468 2012

2

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

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

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

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

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


2

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


タイトルをフィルターキーとして使用することを想像していたので、直感的ではなかったので、私はそれに苦労していました。ありがとうございました!
donnadulcinea

1

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

コンテキストフィルターでは、「フィルター値を使用できない場合」->「URLからパラメーターをクエリする」を選択する必要があります。次に、URLで使用するパラメーター名を追加できます。これにより、+と|を使用することもできます。複数のフィルター基準を選択するための文字。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.