hook_form_FORM_ID_alter:在 drupal 8 视图中预先 select 一个来自公开过滤器的复选框
hook_form_FORM_ID_alter: Pre select a checkbox from an exposed filter in a drupal 8 view
我有一个列出博客文章的视图。博客内容类型有一个 'tags' 词汇表的分类参考字段,作者可以 select 1 个或多个标签。该视图显示 'Has taxonomy terms (with depth) (exposed)' 过滤器(作为复选框列表),以便用户可以搜索包含 1 个或多个标签的博客文章。
现在,我正在尝试在 hook_form_FORM_ID_alter() 挂钩中预先 select 向用户公开的复选框中的 1 个。它应该像下面的代码一样简单,但它不起作用。我尝试预先 select 的标签的 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);
}
}
}
我有一个列出博客文章的视图。博客内容类型有一个 'tags' 词汇表的分类参考字段,作者可以 select 1 个或多个标签。该视图显示 'Has taxonomy terms (with depth) (exposed)' 过滤器(作为复选框列表),以便用户可以搜索包含 1 个或多个标签的博客文章。
现在,我正在尝试在 hook_form_FORM_ID_alter() 挂钩中预先 select 向用户公开的复选框中的 1 个。它应该像下面的代码一样简单,但它不起作用。我尝试预先 select 的标签的 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);
}
}
}