回答:
unset()フォームを使用することは(ご存知のように)フォームに適したソリューションではありません。処理されるときに未設定の要素が存在することを期待する送信/検証ハンドラーがわからないためです。これにより、不要なエラーが発生する可能性があります。
フォーム要素を「隠す」ために安全に使用できる3つの方法があります
'#type' => 'value'エレメントで使用します。これにより、エレメントの値は#value通常どおりに送信/検証関数に渡されます。これは私の好みの方法です。'#access' => FALSE要素に使用して、画面に出力しないことを示します。'#type' => 'hidden'Bartが提案したとおりに使用します(これの使用はユースケースに依存しますが、フォーム要素の値を非表示にしようとしている場合、非表示の入力としてフォームに出力したくないと思います)。hide()はフォーム要素で使用すべきではありません。要素に対してバリデーターがまだ実行されているため、フォーム送信プロセス全体を簡単に混乱させる可能性があります。たとえばhide($form['title']);、ノードフォームを使用している場合、タイトルフィールドは必須ですが、値は提供されないため、フォームを送信することはできません。上記の3つの方法は、この順序で使用するのに最適な方法です。)
drupal_render($form['base']['prices']['sell_price'])いません)..とにかく最初の答えで私のコメントを参照してください、なぜ機能していないのですか?
drupal_render()に出力できるが、フォームタグ/トークン/などのいずれも取得できないためです。あなたの出力全体の場合を除き$form、アレイ
テンプレートファイルを使用している場合は、hide()を使用して内容を非表示にできます。
あなたがフォーム要素を非表示にする場合はhook_form_alter、unset()あなたの最良の選択肢かもしれません。
値を保存するだけの場合は、'#type' => 'hidden'も使用できます。
drupal_render($form['base']['prices']['sell_price'])表示にしました。しかし、フォームは表示されますが、保存されません!