我正在尝试使用节点引用字段在drupal中创建一个定制表单。
我想为节点参考自动完成添加一些额外的功能。我创建了一个包含参数的视图。我希望能够将该参数从下拉列表以及键入的文本传递到自动完成脚本。
有谁知道我是如何开始的。
/* FIELD 1 - the drop down */
$sql = "SELECT nid, title FROM node where type='resourcetype' AND status =1 order by title
";
$result = db_query($sql);
$counter = 0 ;
$options = array();
while ($data = db_fetch_array($result)) {
// krumo ($data);
$options[$data[nid] ] = $data[title] ;
if ($counter ==0 ) {$df = $data[nid]; }
$counter ++;
}
/* FIELD 2 - the node reference field */
$form['sor']['type'] = array(
'#type' => 'select',
'#title' => t('Resource type'),
'#required' =>TRUE,
'#options' => $options,
) ;
$form['sor']['field_asor_sors'] = array(
'#type' => 'textfield',
'#title' => t('Add a SOR item to this job'),
'#autocomplete_path' => 'nodereference/autocomplete/field_asor_sors',
'#element_validate' => array('myelement_validate_is_valid_noderef'),
'#required' =>TRUE,
);
非常感谢
马特
答案 0 :(得分:2)
AFAIK没有简单的方法可以做到这一点。
我想在不久前做类似的事情(使用基于节点上下文的不同参数),但是没有这样做,因为它需要对自动完成回调逻辑进行一些重大更改。您需要更改多个nodereference函数以添加对将参数传递给初始回调nodereference_autocomplete()
的支持,将其从那里传递到_nodereference_potential_references()
,最后传递给_nodereference_potential_references_views()
,同时确保这些变化不会破坏其他任何东西。
如果你想尝试,你应该看看this thread中的补丁,因为他们也想做类似的事情,可能包含一些有用的提示/示例。
一个可能更容易的替代方法可能是将nodereference字段的#autocomplete_path
回调与您自己的自定义版本交换生成结果,同时将js逻辑添加到您的下拉列表中,以便在该路径中添加一个额外的参数。选择变化。
答案 1 :(得分:-1)
如果您进入nodereference字段配置表单,并一直滚动到底部,则会出现一个标题为“Advanced - 可以引用的节点(View)”的字段集(可能已折叠)。您可以使用它来选择视图,并将该视图作为节点参考选择的来源,而无需编写任何新代码。