我需要选中公开过滤器上的复选框,以查看基于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'];有人能帮忙吗?
发布于 2019-11-11 03:01:38
我终于能够通过hook_views_pre_build()钩子实现我所需要的东西。
如果这是错误的,或者有更好的方法,请告诉我,但据我所知,这是实现这一目标的最佳方法。
function module_views_pre_build(ViewExecutable $view) {
$termId = 357;
$view->setExposedInput(['field_name' => [$termId => $termId]]);
}发布于 2022-06-14 10:09:46
可以通过添加视图id条件来使用hook_form_alter()。使用下面的代码,将FILTER_NAME替换为过滤器的名称,并设置必要的选项。
$request = \Drupal::request();
if (!$request->get(FILTER_NAME, NULL)) {
$input = &$form_state->getUserInput();
$input[FILTER_NAME] = [
'opt1' => 'opt1',
'opt2' => 'opt2',
];
}https://drupal.stackexchange.com/questions/288115
复制相似问题