为下拉菜单数组中的每个选项添加范围而不是单个值?

时间:2012-07-07 01:52:53

标签: arrays drupal range

编辑:

我的原始帖子包含在问题的底部,但非常模糊,所以我正在尝试更新它以使自己更清晰。我的网站有一部分用户提交商家评论。在一个这样的领域,他们选择他们是否有一个条形标签。他们可以选择无,饮料,食品和两者。当他们提交他们的选项时,它作为浮点值存储在数据库中,其中None表示为0,Drinks表示为1,Food表示为2,Both表示为3.然后我将所有这些值平均化为单个字段以显示在企业的页面。因此,如果某个企业的条形图标签的平均值为.5,则显示为“无”,将值1.2显示为“饮料”等。

然后我有一个显示所有商业页面的标记的视图,用户可以按业务页面上的字段结果过滤结果。我想有一个下拉菜单来显示过滤器的选项,但我不知道如何为数组中的每个值分配一个范围而不是单个值。这是我现在拥有的:

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

如您所见,如果用户选择“饮料”作为过滤器中的选项,则只会显示浮动字段中值为1的页面。但是,就用户而言,他们选择的“饮料”应该使用“饮料”值或浮动值>.75 && <=1.5过滤所有页面。我需要数组中的选项来反映这一点。所以,虽然下面的代码不正确,但我想要的是:

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

有人知道怎么做吗?我希望这比我原来的帖子更清楚。

ORIGINAL:

我刚才在drupal论坛上问过这个问题,但是我没有得到任何答复,所以我希望有人可以帮助我。我在一个模块中有一个select数组的代码。

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

然而,问题是每个选项仅与单个值相关。有没有办法为每个选项分配范围?结果是0到1之间的任何值都分配给None,1和2之间的任何值都分配给Drinks等?

1 个答案:

答案 0 :(得分:0)

基于我们上面的对话,如果数组键被编码为表单字段的值=“”,并因此传递给后续页面,我的建议是这样的:

将此实现移至处理请求而不是此表单生成请求。我不熟悉Drupal开发(最近两年都不熟悉),但我想你在随后的请求中有钩子,你可以修改提交的值,然后由select查询的框架选择它们。

要注意的事情:你可能无法在另一边简单地使用这样的字符串,因为Drupal很可能会逃避值,将它们放在引号中,并使用=比较运算符。在选择时,您可能需要检查Drupal文档以了解如何指定表达式。