En / admin / people, quiero ocultar el nombre para mostrar (es decir, el nombre para mostrar no debe aparecer en la lista de usuarios), sino solo para un rol específico.
En mi archivo .module, he intentado los siguientes ganchos:
function hook_views_data_alter(array &$data) {
kint($data['users']);die;
}
function hook_views_pre_render(\Drupal\views\ViewExecutable $view) {
if($view->id() == 'myview'){
print_r($view->result);die;
// kint($value->_entity->get('title')->value);
}
}
function hook_views_post_render(\Drupal\views\ViewExecutable $view) {
if ($view->id() == 'viewid') {
// Set the view title.
$field_name = $view->getFields();
}
}
function hook_field_views_data_views_data_alter(array &$data, \Drupal\field\FieldStorageConfigInterface $field) {
$field_name = $field->getName();
echo 'hjsjhwd';
print_r($field_name);die;
}
Ninguno de ellos me ayudó. Pensé en obtener los campos de la vista "usuario" y después de eso lo desarmaré para un rol particular. Pero en la lista de vistas, el campo Nombre todavía aparece. ¿Cómo puedo ocultarlo para un rol en particular?
¿Hay alguna forma de lograr esto?
display name
/ admin / page, en realidad quiero ocultar esa columna en particular. Puede ser que si oculto el campo, esa columna también se oculta para mi rol particular.Respuestas:
La forma más eficiente sería usar hook_views_pre_view (), que le permite alterar una vista al comienzo del proceso, es decir, antes de que se construya / ejecute cualquier consulta y antes de que tenga lugar cualquier representación. Puede eliminar el controlador de campo 'nombre' de la Vista según la lógica deseada.
Esta solución asume que solo está interesado en servir este caso de uso muy específico: elimine el campo solo de esta Vista específica. Es posible que los usuarios aún puedan ver los nombres para mostrar de los usuarios en otras áreas del sitio web.
fuente
$views->id() ===
?$views->id()
? Debe ser$view->id()
?if (empty(array_intersect($userRoles, $userRolesAllowed)))
. Más información sobrearray_intersect
Puede ocultar campos utilizando hook_entity_field_access , puede ocultar el campo en función de la cuenta de usuario (el rol es una de sus propiedades), la operación y la entidad que contiene el campo.
También puede usar el módulo Permisos de campo para ocultar un campo de ciertos roles.
fuente
Cuando necesite eliminar el encabezado de la tabla <td> y también las filas <td>, puede usar template_preprocess_views_view_table
Nota: Para cualquier necesidad como esta, intente no usar más de dos ganchos para satisfacer sus necesidades. Dado que Drupal siempre hará lo que quiera usando uno o dos ganchos no más.
Actualización: para Drupal 7 también se usa el mismo nombre de enlace en esta URL template_preprocess_views_view_table
fuente
Utilice el módulo de permisos de campo de vistas . ¡No se requiere código personalizado!
El soporte para roles se agregó hace aproximadamente un mes.
fuente