正如标题中的说明,我正在寻找在需要空字段时删除节点。 我不太了解Drupal,所以请你能给我一些建议,以解决我的问题? 我是否需要开发一个新模块?或者只是修改现有模块中的某些行?DRUPAL 7 - 当需要一个空字段时删除一个节点drupal 7
预先感谢您的回答
正如标题中的说明,我正在寻找在需要空字段时删除节点。 我不太了解Drupal,所以请你能给我一些建议,以解决我的问题? 我是否需要开发一个新模块?或者只是修改现有模块中的某些行?DRUPAL 7 - 当需要一个空字段时删除一个节点drupal 7
预先感谢您的回答
如果你已经给现场的要求,那么你将无法创建空字段的节点,所以不需要做任何其他代码删除。
如果所需然后执行以下不言,
只是要现场按要求形式的后端。
转到管理 - >结构 - >内容类型
点击您指定的内容类型管理领域,
编辑您的必填字段
检查“要求字段“,并保存
这一切都完成了,它将限制提交空白字段的形式。
这是“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");
}
此解决方案,因为节点/%/删除仅仅是一个提示删除的节点而不触发节点内容的任何验证。
非常感谢您的回答。 其实,我的问题是如下: 我不能修改字段的结构。但我使用节点导入上传项目。一些节点已经空了现在,我想删除一个空的需要字段的节点, – InsRg
你可以做这个hook_cron,这对于将来的导入也是有用的,因为你需要获得这些节点的nid。这可以通过使用field_data_YOURFIELDNAME和节点表的连接查询来获得。然后循环nid数组并使用node_delete($ nid)或node_delete_multiple($ nid_array) – JSunny
非常感谢!我将用hook_cron进行测试。我需要创建一个新的模块不是吗? – InsRg