【问题标题】:hook_form_FORM_ID_alter: Pre select a checkbox from an exposed filter in a drupal 8 viewhook_form_FORM_ID_alter:在 drupal 8 视图中从暴露的过滤器中预先选择一个复选框
【发布时间】:2021-08-18 00:23:11
【问题描述】:

我有一个列出博客文章的视图。博客内容类型有一个“标签”词汇的分类参考字段,作者可以选择 1 个或多个标签。该视图公开了“具有分类术语(具有深度)(公开)”过滤器(作为复选框列表),以便用户可以搜索包含 1 个或多个标签的博客文章。

现在,我正在尝试预先选择在 hook_form_FORM_ID_alter() 挂钩中向用户公开的 1 个复选框。它应该像下面的代码一样简单,但它不起作用。我尝试预选的标签的 ID 为 288。

我做错了什么?谢谢...

    function xtheme_form_views_exposed_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id)
{

    if($form['#id'] == 'views-exposed-form-vcon-finder-page-1'){
        $form['tags']['#default_value'] = [288 => 288];
    }

}

【问题讨论】:

    标签: drupal-8 drupal-views preprocessor drupal-taxonomy


    【解决方案1】:

    你必须像这样设置user input

    function xtheme_form_views_exposed_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
        if($form['#id'] == 'views-exposed-form-vcon-finder-page-1'){
            if (is_null(\Drupal::request()->get('tags'))) {  
            // Avoid overriding the filter values selected by user
                $input = $form_state->getUserInput();
                $input['tags'] = [288 => 288];
                $form_state->setUserInput($input);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多