我在节点添加表单中使用这个方法来隐藏字段'field_obyavlenie_ploschad_uch'。
$form['field_obyavlenie_ploschad_uch']['#states'] = [
'invisible' => [
'select[name="field_obyavlenie_rubrika"]' => ['value' => '4524'],
]
];
但是如果用户在这个字段中输入任何值(在字段被隐藏之前),我在Node视图中看到这个值。
我正在尝试清空字段值,但它不工作。
$form['field_obyavlenie_ploschad_uch']['#states'] = [
'empty' => [
'select[name="field_obyavlenie_rubrika"]' => ['value' => '4524'],
]
];
如何清空不可见字段?
根据@2pha的评论,你不能用下面的方法实现这个功能 表格API声明.
如果你真的希望字段被清空,你将不得不添加一个自定义的验证或提交处理程序,并取消设置该值。
然而,如果你不太在意数据库中的持久化值,那么你可以在一个预处理钩子(函数)中利用它。对于你的用例来说,这将是一个节点预处理钩子,并在另一个字段具有特定值时取消设置应该不可见的值。
/**
* Prepares variables for node templates.
*
* @see template_preprocess_node()
*/
function YOUR_MODULE_preprocess_node(&$variables) {
/* @var $node \Drupal\node\NodeInterface */
$node = $variables['node'];
// Look for a node field value and act accordingly.
if ($node->get('field_obyavlenie_rubrika')->value == '4524') {
unset($variables['content']['foo']['field_obyavlenie_ploschad_uch']);
}
}