2

我正在尝试在 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,

      );

非常感谢

马特

4

2 回答 2

2

AFAIK 没有简单的方法可以做到这一点。

不久前我想做类似的事情(使用基于节点上下文的不同参数),但没有这样做,因为它需要对自动完成回调逻辑进行一些重大更改。您需要更改几个 nodereference 函数以添加对将参数传递给初始回调的支持nodereference_autocomplete(),将其从那里传递到_nodereference_potential_references(),最后传递到_nodereference_potential_references_views(),同时确保更改不会破坏其他任何东西。

如果你仍然想尝试,你应该看看这个线程中的补丁,因为他们也想做类似的事情,并且可能包含一些有用的提示/示例。

A potentially easier alternative might be to exchange the #autocomplete_path callback of the nodereference field with your own custom version that would generate the result, while adding js logic to your dropdown to add an additional argument to that path when the selection changes.

于 2009-11-19T19:09:44.927 回答
-1

如果您进入节点引用字段配置表单,并一直滚动到底部,则会出现一个名为“高级 - 可以引用的节点(视图)”的字段集(可能已折叠)。您可以使用它来选择一个视图并将该视图作为节点引用选择的源,而无需编写任何新代码。

于 2009-11-19T16:44:09.263 回答