2012-06-01 6 views
4

На Drupal 7, когда я отправляю узел, я перенаправляюсь на созданный конкретный узел.Drupal как перенаправить форму узла после отправки формы

Я ищу перенаправление на главную страницу администратора, когда я правильно размещаю узел.

Я пытался поставить это на template.php:

function node_submit($form, &$form_state) { 
    $form_state['redirect'] = 'admin'; 
} 

Но была ошибка представить:

Fatal error: Cannot redeclare node_submit() (previously declared in /var/www/XXX/modules/node/node.module:1004) in /var/www/XXX/sites/all/themes/XXX/template.php on line xx

ответ

4

Вы можете использовать hook_form_alter(), чтобы сделать это.

function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id) 
{ 
    if ($form_id == "CONTENT_TYPE_node_form") { 
    $form['#redirect'] = "node"; 
    } 
} 

Надеюсь, что это сработает.

3

В качестве альтернативы, если вы не хотите, чтобы написать код, попробуйте модуль правил: http://drupal.org/project/rules

Добавить новое правило и установить «Реагировать на событии», чтобы быть «После сохранения нового контента».

Установите действие: «Система: перенаправление страницы» и заполните поля соответствующим образом.

Если вы хотите получить это правило в код, они могут быть экспортированы в модуль!

6

Если все, что вы хотите сделать, это изменение, в котором пользователь перенаправляет после отправки формы узла-добавителя из определенной ссылки, есть намного более простой способ.

Просто сделать вашу ссылку выглядеть следующим образом:

/node/add/[CONTENT-TYPE]?destination=[URL-REDIRECT] 

Вот пример того, что я работаю:

/node/add/ic-competencies-toolkit-codes?destination=admin/survey-codes 
5

Это работает для меня:

function mymodule_form_FORM_ID_alter(&$form, $form_state){ 
    $form['actions']['submit']['#submit'][] = 'mymodule_redirect_callback'; 
} 

function mymodule_redirect_callback($form, &$form_state){ 
    $form_state['redirect'] = '_path_'; 
} 

Важным моментом Следует отметить:

$form['actions']['submit']['#submit'][] = 'some_function'; 

будет работать, но

$form['#submit'][] = 'some_function'; 

не будет

1

В Drupal 7 это правильный путь:

function mymodule_form_alter(&$form, &$form_state, $form_id) { 
    if($form_id === 'myform_id'){ 
    $form['#submit'][] = '_mymodule_redirect_callback'; 
    } 

function _mymodule_redirect_callback($form, &$form_state) { 
    $form_state['redirect'] = 'http://www.google.ch'; 
} 
1

Простейший способ перенаправить комментарий форму или форму узла

case 'my_node_form': 
     $form['#action'] .= '?destination=well-done'; 
     break; 

Обратите внимание: «.» после $ form ['# action']

Вам нужно добавить не заменять!

Смежные вопросы