Мне нужно изменить поведение формы редактирования для нескольких типов контента.Drupal 7, сохранить новый узел при редактировании старого
Цель: -После нажатия кнопки обновления не обновляйте узел, а создавайте новый со значениями из старого узла. Я мог бы это сделать, передав значения полей старого узла в форму «/ node/add/my_content», но для этого требуется большая работа (формы довольно сложны), а на странице редактирования у меня уже есть все значения, готовые в моих полях.
Так я уже пытался hook_form_alter
function mymodule_form_alter (&$form, &$form_state, $form_id) {
switch ($form_id) {
case 'my_not_update_form':
$node = $form_state['node'];
if (!isset($node->nid) || isset($node->is_new)) {
// This is a new node.
}
else {
$new_node = new StdClass();
$new_node->type = 'my_not_update_form';
node_object_prepare($new_node);
$new_node->uid = $user->uid;
$new_node->language = 'und';
$new_node->title = NULL;
$form['vid']['#value'] = NULL;
$form['nid']['#value'] = NULL;
$form['created']['#value'] = $new_node->created;
$form['changed']['#default_value'] = NULL;
$form['#node'] = $new_node;
$form['#entity'] = $new_node;
$form_state['node'] = $new_node;
$form_state['build_info']['args'][0] = $new_node;
}
break;
}
}
Так что с выше код, я смог создать новый узел, а параметр «дате создания» всегда остаются такими же, как создать параметр даты старого узла и ни одна из вышеперечисленных строк не может решить эту проблему.
Это не точка моей проблемы. Я не создаю новый узел обычным способом. Я обновляю узел и хочу перезаписать переменные $ form и $ form_state, чтобы обмануть node_form_submit(), что эта функция будет думать, что данные, которые будут сохранены, - это новый узел, а не старый. – szikael
Я внесла изменения в код, чтобы он, надеюсь, обратился к вашему комментарию. – timgeek