首页 文章

Drupal更好地暴露形式设置钩子的最小值和最大值

提问于
浏览
0

我在Drupal 7网站上安装了'better exposed form'模块,我为商业模块目录创建了一个视图,并在JQuery上创建了一个滑块范围过滤器,这里是(抱歉,该网站是俄语,但无论如何,最重要的是一个JQueryUI滑块)http://doors.ekt0.ru/ . 所以,问题是,如何从钩子以编程方式设置滑块最小和最大可能值 . 这是因为想要从产品价格的数据库表中使最小和最大价格成为现实 . 这是我的代码:

function zen_form_views_exposed_form_alter(&$form, $form_state) {

  $minmax = db_query('SELECT MIN(`commerce_price_amount`) AS `min`, MAX(`commerce_price_amount`) AS `max` FROM `field_data_commerce_price`')->fetchAssoc();

  $form['commerce_price_amount']['min']['#value'] = $minmax['min'];
  $form['commerce_price_amount']['max']['#value'] = $minmax['max'];
}

这是$ form数组的'commerce_price_amount'键的内容:

[commerce_price_amount] => Array (
      [#tree] => 1
      [min] => Array (
           [#type] => textfield
           [#title] => 
           [#size] => 30
           [#default_value] => 
      )
      [max] => Array (
           [#type] => textfield
           [#title] => And
           [#size] => 30
           [#default_value] => 
      )
)

所以,正如我们在这里看到的,唯一看起来像我需要的数组键是#default_value,但它实际上不是那个,它不会对表单做任何可见的更改,我也尝试了#value键(如上所示)代码),但它设置默认滑块范围值,只是移动旋钮,而不是设置最小值和最大值 . 所以问题是,如何做,第二个问题是,模块中有任何设置可以自动设置最小值和最大值(我无法在设置中找到任何内容) . 提前致谢!

1 回答

  • 0

    BEF模块将这些选项添加为javascript选项,因此您可以使用hook_js_alter()来覆盖它 .

    /**
     * Implements hook_js_alter().
     */
    function MODULE_js_alter(&$javascript) {
      $settings = $javascript['settings']['data'];
    
      foreach ($settings as $key => $value) {
        if (isset($settings[$key]['better_exposed_filters']['slider_options']['commerce_price_amount']['max'])) {
          $settings[$key]['better_exposed_filters']['slider_options']['commerce_price_amount']['max'] = 1000;
        }
      }
    
      $javascript['settings']['data'] = $settings;
    }
    

相关问题