2014-07-16 78 views

回答

0

如果你已经给现场的要求,那么你将无法创建空字段的节点,所以不需要做任何其他代码删除。

如果所需然后执行以下不言,

只是要现场按要求形式的后端。

  1. 转到管理 - >结构 - >内容类型

  2. 点击您指定的内容类型管理领域,

  3. 编辑您的必填字段

  4. 检查“要求字段“,并保存

这一切都完成了,它将限制提交空白字段的形式。

+0

非常感谢您的回答。 其实,我的问题是如下: 我不能修改字段的结构。但我使用节点导入上传项目。一些节点已经空了现在,我想删除一个空的需要字段的节点, – InsRg

+0

你可以做这个hook_cron,这对于将来的导入也是有用的,因为你需要获得这些节点的nid。这可以通过使用field_data_YOURFIELDNAME和节点表的连接查询来获得。然后循环nid数组并使用node_delete($ nid)或node_delete_multiple($ nid_array) – JSunny

+0

非常感谢!我将用hook_cron进行测试。我需要创建一个新的模块不是吗? – InsRg

0

这是“drupal无法删除具有空的必填字段的节点”的第一个Google结果,而且它似乎是OP有我确切的问题,所以我在这里发布我的解决方案。 Google上没有其他结果给我解决了我的问题。

为了重新创建这个问题,一个香草Drupal安装,使所需内容类型的字段,如正文。创建该内容类型的节点。然后尝试从主体中删除所有内容后删除该节点。 Drupal不会让你这样做,因为它总是验证表单#submit元素,除非你不告诉它。这是一个问题,例如,节点以编程方式创建,其中有许多必填字段为空。

/** 
* Implements hook_form_alter() 
*/ 
function mymodule_form_alter(&$form, &$form_state, $form_id) { 
    if (isset($form_id)) { 
    if ($form_id == 'NODETYPE_node_form') { 
     $form['actions']['fdelete'] = array(
     '#type' => 'submit', 
     '#weight' => 999, 
     '#access' => user_has_role(user_role_load_by_name('administrator')->rid), 
     '#value' => t('Force Delete'), 
     '#submit' => array('mymodule_force_delete'), 
     '#limit_validation_errors' => array(), 
    ); 
    } 
    } 
} 

function mymodule_force_delete(&$form, &$form_state) { 
    unset($_GET['destination']); 
    drupal_goto("node/{$form_state['node']->nid}/delete"); 
} 

此解决方案,因为节点/%/删除仅仅是一个提示删除的节点而不触发节点内容的任何验证。