0

我有一个使用自动完成小部件类型的实体引用字段。我想将小部件类型更改为“选择列表”以添加新节点,并在编辑时保持自动完成。

已经两天了,我正在研究这个。我没有找到任何解决方案。

4

1 回答 1

1

我这样做的一种方法是使用hook_form_alter. 创建一个自定义模块(如果您还没有(我们现在称之为 mymodule)并添加函数:

function mymodule_form_alter(&$form, &$form_state, $form_id)

在那里,您可以检查 id 以查看正在处理的表单,它应该类似于以下内容,mytype_node_form但您也可以通过drupal_set_message(print_r($form_id, true));在函数中执行类似的操作来相当容易地检查它。

您可以通过检查来检查您是否正在添加或更新$form_state['node']->nid。之后,您可以通过执行以下操作来修改表单:

function mymodule_form_alter(&$form, &$form_state, $form_id)
{
    // check to see if this is our form and it is a new node form (doesn't have an id yet)
    if ($form_id == 'mytype_node_form' && !isset($form_state['node']->nid)) {
        $form['field_coordinators']['und']['#type'] = 'select';
    }
}

这只是一个开始,您可能需要更改甚至删除其他属性,但您可以通过将字段设置为使用选择列表并$form再次检查 的结构来查看这些设置。

于 2013-07-25T20:10:42.323 回答