web-dev-qa-db-ja.com

公開されたビューの変更drupal 8

私はそのビューで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();
  }
}

私の見解は次のようになります enter image description here

2

次の例では、ユーザーが管理者でない場合にフィルター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";
3
GiorgosK