Yanıtlar:
Kullanmak unset()
, formlar için iyi bir çözüm değildir (bildiğini düşündüğüm gibi), ne zaman gönder / doğrula işleyicilerinin ayarlanmamış öğenin işlendiklerinde var olmasını beklediğini asla bilemeyeceğinizden. Bu istenmeyen hatalara neden olabilir.
Bir form öğesini 'gizlemek' için güvenle kullanabileceğiniz üç yöntem vardır
'#type' => 'value'
için değerin #value
, normalde olduğu gibi gönderme / doğrulama işlevlerine aktarılacağı etkisine sahip olacak öğe üzerinde kullanın . Bu benim tercih ettiğim yöntem.'#access' => FALSE
Ekrana çıktısının verilmemesi gerektiğini belirtmek için öğe üzerinde kullanın .'#type' => 'hidden'
Bart'ın önerdiği gibi kullanın (bunun kullanımı sizin kullanım durumunuza bağlı olmasına rağmen; formda gizli bir girdi olarak çıktısını almak istemediğiniz bir form öğesinin değerini gizlemeye çalışıyorsanız).hide()
form öğelerinde kullanılmamalıdır, tüm form gönderme işlemini öğe için doğrulayıcılar çalıştırıldığı için kolayca karıştırabilir. Örneğin, hide($form['title']);
bir düğüm formundaysanız, başlık alanı gerektiği için formu gönderemezsiniz, ancak bir değer sağlanmaz. Yukarıdaki 3 yöntem, bu sırayla kullanmak için en iyi olanlarıdır :)
drupal_render($form['base']['prices']['sell_price'])
çalışmıyor?
drupal_render()
, form etiketlerinden / jetonlarından / vb. bütün $form
diziyi vermedikçe
Bir şablon dosyası kullanıyorsanız, hide () kullanarak bir şeyler gizleyebilirsiniz .
Eğer bir form öğesi gizlemek istiyorsanız hook_form_alter
, unset()
en iyi seçenek olabilir.
Sadece bir değer saklamak için de '#type' => 'hidden' kullanabilirsiniz .
drupal_render($form['base']['prices']['sell_price'])
formu gösterecek, ancak kaydetmiyor !