Przez jakiś czas mnie to niepokoiło. Kiedy próbuję ukryć pola takie jak pole grupy odbiorców lub ustawienie publikowania przed formularzem, po sprawdzeniu poprawności zestaw obu pól ma wartość zerową, mimo że wartość defaut jako został poprawnie zadeklarowany.
Próbowałem użyć Invisible, #access, rozbroić ukryte, nic nie działa! Jest to bardzo kłopotliwe, ponieważ w moim obecnym projekcie użytkownicy mogą edytować tylko małe fragmenty swojego profilu w danym momencie, na przykład tylko adres lub zdjęcie, więc jeśli ukryję grupę odbiorców, użytkownik zostanie wyrzucony z grup, do których należy edytować.
Skończyło się na użyciu poniższego kodu, aby ukryć te pola, jednocześnie utrzymując użytkownika w grupie.
$variables['user_edit_about']['group_audience']= $temp['group_audience'];
$variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">';
$variables['user_edit_about']['group_audience']['#suffix'] = '</div>';
Czy ktoś pomyślałby o lepszym sposobie osiągnięcia tego?
Dzięki
źródło
Odpowiedzi:
Edytować:
Ok, rozgryzłem to. Umieść to w swoim module niestandardowym:
Spowoduje to ustawienie tytułu węzła opowieści na „gorące rzeczy” i NIE będzie renderowane na stronie, ponieważ #access = FALSE;
Możesz dodać więcej kontroli ziarnistości wewnątrz hook_form_alter () jak
Działa to dla Drupal 6 i 7.
Stara odpowiedź (zignoruj):
Minęło trochę czasu, odkąd zrobiłem coś takiego, więc mogę się mylić. Jeśli ustawisz
[#value]
element formularza, nie będzie on widoczny w formularzu.Zrobiłem to w Drupal 6,
hook_form_alter()
w module niestandardowym. Nie wiem, czy to zadziała w Drupal 7 i nie wiem, czy możesz to zrobić w funkcji przetwarzania wstępnegoźródło
Możesz także dodać klasę CSS „ukrytą pod elementem” do elementu formularza
Jak wspomniano wcześniej iStryker, nadal można zmienić wartość za pomocą manipulacji DOM. Jest to jednak przyjemny i łatwy sposób na ukrycie pola formularza (lub dowolnego innego elementu renderowania).
element-hidden
Klasa jest zdefiniowana wsystem.base.css
.źródło