首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal 7,根据接口验证节点

Drupal 7,根据接口验证节点
EN

Stack Overflow用户
提问于 2020-03-19 16:26:03
回答 1查看 68关注 0票数 2

我创建了一个webservice,它工作正常,我执行节点创建操作,并且它工作正常。我需要验证将要保存的节点,就像在接口插入表单中验证它一样。

我试过了

代码语言:javascript
复制
drupal_form_submit($nodeType . '_node_form', $form_state, (object) $node);

它总是给我错误--它的节点引用字段

您是否可以建议其他方法来进行与以编程方式创建的节点上的接口所做的验证相同的操作?

节点引用字段上的错误是:

“field_ente :不能引用此条目。

节点(6310)正确存在,如果我尝试执行node_save,它将被正确保存。

完整的函数如下

代码语言:javascript
复制
function my_ws_resource_create($field_nome = '', $field_cognome = '', $field_codice_fiscale = '', $field_data_di_nascita = '', $field_ente= '')
{

    module_load_include('inc', 'node', 'node.pages');
    global $user;
    $nodeType = 'contatti';

    $node = new stdClass();
    $node->type = $nodeType;
    $node->uid = $user->uid;
    $node->status = 1;
    $node->revision = 1;
    $node->promote = 0;
    $node->comment = 0;

    node_object_prepare($node);

    $node->field_cognome['und'][0]['value'] = $field_cognome;
    $node->field_nome['und'][0]['value'] = $field_nome;
    $node->field_codice_fiscale['und'][0]['cck_codicefiscale'] = $field_codice_fiscale;
    $node->field_data_di_nascita['und'][0]['value'] = $field_data_di_nascita;
    $node->field_categoria_contatto['und'][0]['tid'] = '66';



    // $node->field_ente = array('und' => array(array('nid'=> $field_ente )));
    // this field causes the error
    $node->field_ente = array('und' => array(array('nid'=> '6310')));



    $node->field_simplenews_term['it'][0]['tid'] = '13660';

    $form_state = array();      
    $form_state['values']['type'] = $nodeType;    
    $form_state['values']['name'] = $user->name;    
    $form_state['values']['status'] = 1;
    $form_state['values']['promote'] = 1;
    $form_state['values']['sticky'] = 0;

    $form_state['values']['op'] = t('Save');
    drupal_form_submit($nodeType . '_node_form', $form_state, (object) $node);

    if ($errors = form_get_errors()) {
        return services_error(implode(" ", $errors), 406, array('form_errors' => $errors));
    }
    return 'Creation successful';
}
EN

回答 1

Stack Overflow用户

发布于 2021-10-08 06:47:35

我已经成功地完成了以下工作(删除$form_state并替换drupal_form_submit):

代码语言:javascript
复制
if ($node = node_submit($node)) {
  node_save($node);
  // Success!
}
else {
  // Fail :(
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60761226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档