如何在Drupal 8实体中创建隐藏类型字段

如何在Drupal 8实体中创建隐藏类型字段,drupal,drupal-8,Drupal,Drupal 8,我正在使用Drupal8,我有一个实体,我想在实体表单中添加一个隐藏类型字段。如何添加隐藏字段类型?如下 <form> <input type='hidden' name='my_hidden' /> </form> 如果仅使用UI,则可以在管理表单显示中禁用字段的显示。但我假设你要的是你自己的编码表格。。。就是这样, $form['my_hidden'] = array( '#type' => 'hidden', '#valu

我正在使用Drupal8,我有一个实体,我想在实体表单中添加一个隐藏类型字段。如何添加隐藏字段类型?如下

<form>
    <input type='hidden' name='my_hidden' />
</form>

如果仅使用UI,则可以在管理表单显示中禁用字段的显示。但我假设你要的是你自己的编码表格。。。就是这样,

$form['my_hidden'] = array(
    '#type' => 'hidden',
    '#value' => $my_hidden_value, 
);

如果仅使用UI,则可以在管理表单显示中禁用字段的显示。但我假设你要的是你自己的编码表格。。。就是这样,

$form['my_hidden'] = array(
    '#type' => 'hidden',
    '#value' => $my_hidden_value, 
);

在Drupal8实体表单中隐藏字段有两个步骤

如果要隐藏现有字段,可以修改表单并根据需要更新该字段

$form['your_field_name']['widget'][0]['value']['type']='hidden'

您可以使用并通过启用此模块,为实体类型的“管理表单显示”对话框中的字段选择“隐藏字段”小部件


在Drupal8实体表单中隐藏字段有两个步骤

如果要隐藏现有字段,可以修改表单并根据需要更新该字段

$form['your_field_name']['widget'][0]['value']['type']='hidden'

您可以使用并通过启用此模块,为实体类型的“管理表单显示”对话框中的字段选择“隐藏字段”小部件

您可以尝试以下方法:

public static function baseFieldDefinitions(EntityTypeInterface $entity_type) 
{
    $fields = parent::baseFieldDefinitions($entity_type);
    $fields['id'] = BaseFieldDefinition::create('integer')
        ->setLabel(t('ID'))
        ->setDescription(t('The ID of the Timeslot entity.'))
        ->setReadOnly(TRUE)
        ->setDisplayOptions('form', array(
            'type' => 'hidden',
            'weight' => -5,
        );
    return $fields;
}
您可以尝试以下方法:

public static function baseFieldDefinitions(EntityTypeInterface $entity_type) 
{
    $fields = parent::baseFieldDefinitions($entity_type);
    $fields['id'] = BaseFieldDefinition::create('integer')
        ->setLabel(t('ID'))
        ->setDescription(t('The ID of the Timeslot entity.'))
        ->setReadOnly(TRUE)
        ->setDisplayOptions('form', array(
            'type' => 'hidden',
            'weight' => -5,
        );
    return $fields;
}

您可以像定义任何其他字段一样创建要隐藏的字段,然后在实体表单集的buildForm方法中执行以下操作

$form['field_name']['widget'][0]['value']['#type'] = 'hidden';

这将使字段成为隐藏字段

您可以像定义任何其他字段一样创建要隐藏的字段,然后在实体表单集的buildForm方法中执行以下操作

$form['field_name']['widget'][0]['value']['#type'] = 'hidden';

这将使该字段成为隐藏字段

在表单元素数组中添加'access'=>FALSE。

在表单元素数组中添加'access'=>FALSE。

谢谢@Arioch,很抱歉我忘了提到drupal版本,我正在使用drupal 8。我还更新了我的问题。我只使用Drupal8。你能告诉我是谁生成了你的表单吗?所以你必须做Satyam Bhardwaz给出的第一个解决方案。但这意味着您将使用这样的钩子形式:无需更改钩子,我的代码工作是:$form['price']=array'type'=>'hidden'、'attributes'=>array'id'=>'price'、'default\u value'=>$session\u price;好的,这是默认值,而不是我认为的值。谢谢@Arioch,很抱歉我忘了提到drupal版本,我使用的是drupal 8。我还更新了我的问题。我只使用Drupal8。你能告诉我是谁生成了你的表单吗?所以你必须做Satyam Bhardwaz给出的第一个解决方案。但这意味着您将使用这样的钩子形式:无需更改钩子,我的代码工作是:$form['price']=array'type'=>'hidden'、'attributes'=>array'id'=>'price'、'default\u value'=>$session\u price;好的,所以它是默认值,不像我想的那样。我尝试了这个方法,但是它从表单中隐藏了字段,或者没有在表单中创建字段。它应该只隐藏字段,因为在显示表单时,您告诉我您希望此字段为type=hidden。你试过了,但它根本没有创建字段?Arioch,谢谢你的帮助和时间。是的,它根本不创建字段,我认为隐藏意味着不在表单中呈现字段。我尝试过这样做,但它从表单中隐藏字段或不在表单中创建字段。它应该只隐藏字段,因为在显示表单时,您告诉我您希望此字段为type=hidden。你试过了,但它根本没有创建字段?Arioch,谢谢你的帮助和时间。是的,它根本不创建字段,我认为隐藏意味着不在表单中渲染字段。