首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以编程方式选中公开筛选器的复选框

以编程方式选中公开筛选器的复选框
EN

Drupal用户
提问于 2019-11-10 00:43:39
回答 2查看 582关注 0票数 1

我需要选中公开过滤器上的复选框,以查看基于url的视图。我好像想不出该怎么做。如果在url中检测到x,我希望设置公开过滤器的一个字段,以使状态checked=“检查”。这似乎很容易,但我似乎搞不清楚。

我尝试过各种方法:

  • hook_views_pre_view()
  • hook_views_pre_build()
  • hook_form_views_exposed_form_alter() (我觉得这应该是最好的方法)。

我发现我可以通过hook_views_pre_view()有效地改变结果,但是我不知道如何在暴露的过滤器上检查那个该死的复选框。

Varioush通过hook_form_alter()失败了:

  • $form["field_intended_use_target_id"]["#default_value"] = ['357'];
  • $form_state->input["field_intended_use_target_id"][356] = '356';
  • $form['field_intended_use_target_id']['widget'][0]['value']['#default_value'] = ['357'];

有人能帮忙吗?

EN

回答 2

Drupal用户

发布于 2019-11-11 03:01:38

我终于能够通过hook_views_pre_build()钩子实现我所需要的东西。

如果这是错误的,或者有更好的方法,请告诉我,但据我所知,这是实现这一目标的最佳方法。

代码语言:javascript
运行
复制
function module_views_pre_build(ViewExecutable $view) {
  $termId = 357;
  $view->setExposedInput(['field_name' => [$termId => $termId]]);
}
票数 1
EN

Drupal用户

发布于 2022-06-14 10:09:46

可以通过添加视图id条件来使用hook_form_alter()。使用下面的代码,将FILTER_NAME替换为过滤器的名称,并设置必要的选项。

代码语言:javascript
运行
复制
$request = \Drupal::request();
if (!$request->get(FILTER_NAME, NULL)) {
  $input = &$form_state->getUserInput();
  $input[FILTER_NAME] = [
    'opt1' => 'opt1',
    'opt2' => 'opt2',
  ];
}
票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/288115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档