2

編集:

私の元の投稿は問題の下部に含まれていますが、非常にあいまいだったので、自分自身をより明確にするために更新しようとしています。私のサイトには、ユーザーがビジネスのレビューを送信するセクションがあります。そのようなフィールドの1つで、バータブがあるかどうかを選択します。なし、飲み物、食べ物、および両方のオプションが与えられます。オプションを送信すると、データベースにfloat値として保存され、Noneは0、Drinksは1、Foodは2、Bothは3としてデータベースに保存されます。次に、これらすべての値を1つのフィールドに平均して表示します。ビジネスのページ。したがって、ビジネスのバータブの平均値が0.5の場合、「なし」と表示され、1.2の値は「飲み物」と表示されます。

次に、すべてのビジネスページのティーザーを表示するビューが表示され、ユーザーはビジネスページのフィールドの結果で結果をフィルタリングできます。フィルタのオプションを表示するためのドロップダウンメニューが欲しいのですが、単一の値ではなく、配列内の各値に範囲を割り当てる方法がわかりません。これが私が現在持っているものです:

$options = array(
    '' => 'Any',
    '0' => 'None',
    '1' => 'Drinks',
    '2' => 'Food',
    '3' => 'Both',
    );

ご覧のとおり、ユーザーがフィルターのオプションとして「飲み物」を選択すると、floatフィールドの値が1のページのみが表示されます。ただし、ユーザーに関する限り、「Drinks」を選択すると、「Drinks」値またはfloat値が。のすべてのページがフィルタリングされます >.75 && <=1.5。それを反映するために配列のオプションが必要です。したがって、次のコードは正しくありませんが、次のような効果が必要です。

$options = array(
    '' => 'Any',
    '>=0 && <=0.75' => 'None',
    '>0.75 && <=1.5' => 'Drinks',
    '>1.5 && <=2.25' => 'Food',
    '>2.25 && <=3' => 'Both',
    );

誰かがこれを行う方法を知っていますか?これが私の元の投稿よりも明確であることを願っています。

オリジナル:

少し前にdrupalフォーラムで質問したのですが、返事が来ていないので、ここの誰かが助けてくれることを願っています。select配列のモジュールに次のコードがあります。

$options = array(
    '' => 'Any',
    '0' => 'None',
    '1' => 'Drinks',
    '2' => 'Food',
    '3' => 'Both',
    );

ただし、問題は、各オプションが単一の値にのみ関連していることです。代わりに各オプションに範囲を割り当てる方法はありますか?その結果、0から1までの値はNoneに割り当てられ、1から2までの値はDrinksに割り当てられます。

4

1 に答える 1

0

上記の会話に基づいて、配列キーがフォームフィールドのvalue = ""としてエンコードされ、次のページに渡されることが事実である場合、私の提案は次のとおりです。

このための実装を、このフォーム生成リクエストではなく、処理リクエストに移動します。私はDrupalの開発に精通していません(とにかく過去2年間ではありません)が、選択クエリのフレームワークによって取得される前に送信された値を変更できる後続のリクエストにフックがあると思います。

注意すべき点:Drupalは値をエスケープし、引用符で囲み、=比較演算子を使用する可能性が高いため、反対側でこのような文字列を単純に使用することはおそらくできません。選択時に式を指定する方法については、Drupalのドキュメントを確認する必要がある場合があります。

于 2012-07-07T05:19:18.300 に答える