web-gelistirme-sc.com

Organik gruplar için group_audience gibi bir formdaki alanlara erişimi gizleme ve / veya engelleme

Bu bir süredir beni rahatsız ediyor .. Grup izleyici alanı veya yayımlama ayarı gibi alanları bir formdan gizlemeye çalıştığımda, doğrulamada form varsayılan olarak bu alanın her ikisini de null değerine ayarladı. doğru beyan edildi.

Görünmez, #access, unset gizli kullanmaya çalıştım hiçbir şey işe yaramadı! Bu çok sorunlu çünkü şu anki proje kullanıcılarım, o anda profillerinin yalnızca küçük parçalarını, örneğin sadece adresi veya resmi düzenleyebilirler, bu yüzden grup kitlesini gizlersem, kullanıcı ait olduğu gruplardan dışarı atılır. Düzenle.

Ben hala kullanıcı kendi grubunda tutarken bu alanı gizlemek için aşağıdaki kodu kullanarak sona erdi.

$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>';

Bunu başarmanın daha iyi bir yolu var mı?

Teşekkürler

9
silkAdmin

Düzenle:

Tamam anladım. Bunu özel modülünüze koyun:

function example_form_alter(&$form, &$form_state, $form_id) {
    if($form_id == 'story_node_form') {
        $form['title']['#value'] = 'hot stuff';
        $form['title']['#access'] = FALSE;

    }
}

Bu, hikaye düğümünün başlığını 'sıcak şeyler' olarak ayarlayacak ve #access = FALSE;

Hook_form_alter () içine daha fazla ayrıntı düzeyi denetimi ekleyebilirsiniz.

  global $user;

  // Check to see if $user has does not have the administrator role.
  if (!in_array('administrator', array_values($user->roles))) {
    $form['title']['#access'] = FALSE;
  }

Bu Drupal 6 ve 7 için geçerlidir.

Eski Cevap (yoksay):

Ben böyle bir şey yaptım beri bir süre oldu, bu yüzden yanlış olabilir. Bir form öğesinin [#value] Ayarını yaparsanız, formda görünmez.

Bunu özel bir modülde Drupal 6, hook_form_alter() içinde yaptım. Drupal 7 ve Önişleme işlevinde yapıp yapamayacağınızı bilmiyorum

6
iStryker

Form öğesine 'element gizli' CSS sınıfını da ekleyebilirsiniz

$form['user_edit_about']['group_audience']['#attributes']['class'][] = 'element-hidden';

İStryker'in daha önce de belirttiği gibi, değeri DOM manipülasyonu ile değiştirmek yine de mümkün olacaktır. Ancak, bu bir form alanını (veya başka bir oluşturma öğesini) gizlemenin güzel ve kolay bir yoludur. element-hidden sınıfı system.base.css.

5
Chaulky