Вы здесь

Как после создания ноды сделать редирект на страницу перевода?

0

Сложилась следующая ситуация:
Решил сделать дополнительную кнопку при создании ноды определённого типа: "Сохранить и добавить перевод"

function mymod_form_novost_node_form_alter(&$form, &$form_state, $form_id) {

$form['actions']['perevod'] = array(
   '#type' => 'submit',
   '#value' => 'Сохранить и добавит перевод',
   '#weight' => 1,
   '#submit' => array('mymod_novost_node_form_submit'),
  );
}   

Далее можно было бы написать, что-то вроде:

function mymod_novost_node_form_submit($form, &$form_state) {
$form_state['redirect'] = 'node/' . $form_state['build_info']['args'][0]->nid . '/translate';
}

но это всё скорее подошло бы для вызова странички "Спасибо что поучаствовали в нашем опросе, ещё вы можете пройти следующие" или что-то в этом роде.

Проблема в том, что этот хук выполняется до отправки формы и nid просто ещё не существует.

Со связкой hook_node_insert($node) и function drupal_goto() не получилось
пробовал

function mymod_novost_node_insert($node) {

     $nid = $node->nid;

 drupal_goto ('node/' . $nid . '/translate');

    }

Но nid хоть и создан, но ещё в базу не записан

Нашел вот такой вот модуль, но понять "уличную магию" не хватает левела, как там пользуют nid у создаваемой ноды, когда через токен в пути используется
https://www.drupal.org/project/node_save_redirect/releases/7.x-1.x-dev

Помогите пожалуйста разобраться

Версия Drupal: 
7.x
Категория: 
Form APINode API
Вопрос задан 12.11.2017 - 23:19

Ответы

0
/**
 * Implements hook_FORM_ID_alter(): page_node_form.
 */
function modulename_form_novost_node_form_alter(&$form, &$form_state, $form_id) {
  $form['actions']['save_and_translate'] = array(
    '#type' => 'submit',
    '#value' => t('Save and translate'),
    '#submit' => array('node_form_submit', 'modulename_form_novost_node_form_save_and_translate'),
  );
}

/**
 * Custom node submit.
 */
function modulename_form_novost_node_form_save_and_translate($form, &$form_state) {
  $form_state['redirect'] = 'node/' . $form_state['values']['nid'] . '/translate';
}
Ответ дан 13.11.2017 - 16:48
Аватар пользователя xandeadx
xandeadx
1461