web-dev-qa-db-fra.com

Modifier les vues du formulaire exposé drupal 8

J'ai une vue que dans cette vue, j'ai mis en place 3 filtres exposés, tout fonctionne bien.

Je dois définir une condition pour afficher la troisième option de filtre à un utilisateur spécifique, elle peut être vérifiée en fonction du rôle d'utilisateur, mais comment dois-je faire cela?

Quelqu'un peut-il fournir un crochet pour m'aider?

Auparavant, j'ai essayé ce qui suit, mais cela ne change rien:

function my_modulename_form_alter(&$form, $form_state, $form_id) {

  if ($form_id == 'views_exposed_form') {

    //unset($form['average']);

    var_dump($form);

    die();
  }
}

Ma vue ressemble à ceci enter image description here

2

L'exemple suivant désactive le filtre average lorsque l'utilisateur N'EST PAS administrateur, vous pouvez le modifier selon votre cas spécifique.

use Drupal\Core\Form\FormStateInterface;
function my_modulename_form_alter(&$form, FormStateInterface $form_state, $form_id){

  $roles = \Drupal::currentUser()->getRoles();
  $is_user_admin = in_array("administrator", $roles);
  $is_exposed = $form_id == 'views_exposed_form';
  $is_filter_set = isset($form['average']);

  if ( $is_exposed && $is_filter_set && !$is_user_admin ) {
    unset($form['average']);
  }
}

Si vous souhaitez annuler la définition uniquement sur un formulaire exposé de vue spécifique, utilisez cette condition

$is_our_view = $form["#id"] == "views-exposed-form-article-page-1";
3
GiorgosK