私はそのビューで3つの露出フィルターを設定し、すべて正常に機能していると思います。
3番目のフィルターオプションを特定のユーザーに表示する条件を設定する必要があります。ユーザーの役割に応じてそれを確認できますが、どうすればよいですか?
誰かが私を助けるためのフックを提供できますか?
以前は以下を試しましたが、何も変わりません。
function my_modulename_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'views_exposed_form') {
//unset($form['average']);
var_dump($form);
die();
}
}
次の例では、ユーザーが管理者でない場合にフィルターaverage
の設定を解除し、特定のケースに変更できます。
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']);
}
}
特定のビューのみで設定を解除したい場合は、この条件を使用してください。
$is_our_view = $form["#id"] == "views-exposed-form-article-page-1";