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();
}
}
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";