Answers:
使用unset()
表单不是解决表单的好方法(正如我想您所知),因为您永远不知道哪些提交/验证处理程序会期望unset元素在处理时存在。这会导致不必要的错误。
您可以安全地使用三种方法来“隐藏”表单元素
'#type' => 'value'
在元素上使用,其效果是该元素的值仍将照常传递给Submit / validate函数#value
。这是我的首选方法。'#access' => FALSE
的元素来表示它不应该被输出到屏幕上。'#type' => 'hidden'
如巴特曾建议(尽管使用这个取决于你的使用情况;我想,如果你想隐藏你的表单元素的值不希望它输出的形式隐藏输入)。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'])
。