drupal-8 - hook_form_FORM_ID_alter:在 drupal 8 视图中从暴露的过滤器中预先选择一个复选框
问题描述
我有一个列出博客文章的视图。博客内容类型有一个“标签”词汇的分类参考字段,作者可以选择 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];
}
}
解决方案
你必须这样设置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);
}
}
}
推荐阅读
- cookies - Electron set-cookies HTTP 标头
- javascript - 需要将二维数组响应转换为Angular 9中的json对象
- json - 如何配置 OrientDB ETL 以将 LinkList 作为边缘属性导入
- r - 如何将按钮添加到闪亮的待办事项列表中的项目
- gerrit - 在 Gerrit 更改 UI 中添加自定义按钮
- ruby-on-rails - Ruby 使用 and 处理多个条件
- python - Python - 安装新包时出现 ModuleNotFoundError
- c# - 经过几次成功的身份验证后,带有 Steam 身份验证的 IOwinContext.Authentication.AuthenticateAsync("ExternalCookie") 随机为空
- angular - 如何防止解析器调用相同的多个 http get 请求
- r - 在 `tapply()` 或 `by()` 运算符中使用自定义函数时出现错误