Используя hook_form_alter
, как я могу перенаправить пользователя на пользовательскую страницу после создания или редактирования узла вместо узла, который был создан или отредактирован?
Текущий код для hook_form_alter()
следующий:
function custom_form_alter(&$form, &$form_state, $form_id) {
if ($form['#id'] == 'custom-node-form') {
$form['actions']['submit']['#value'] = t('Add Entry');
$form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
}
}
7
forms
redirection
Citricguy
источник
источник
Ответы:
Код перенаправляет форму независимо от нажатой кнопки, чтобы отправить форму. Если вы хотите перенаправить форму только при нажатии определенной кнопки отправки, вам следует использовать следующий код.
hook_form_FORM_ID_alter()
в действительности это не нужно, так как он вызывается для конкретной формы, в то время как два других хука вызываются для более чем одной формы.$form['#node']
, который является объектом узла для редактируемого объекта; «custom» - это короткий идентификатор типа контента, который вы хотите перенаправить пользователям, когда они редактируют узел.$form_state['redirect']
отhook_form_alter()
не имеет никакого эффекта; это должно быть установлено из обработчика представления.источник
&
вfunction custom_node_submit($form, &$form_state) {
это очень важно. В противном случае вы не передадите состояние в качестве ссылки, и внесенные вами изменения не окажут влияния.Этот код работает на сайте Drupal 7.
источник
admin/content
странице: drupal.stackexchange.com/a/192271/15055 .Это можно сделать, установив
$form_state['redirect']
, например, одну из следующих строк.Это те же аргументы, которые вы бы передали
drupal_goto()
.источник
$form_state['redirect']
будет перезаписано, если значение равно($node->nid)
TRUE.Не уверен, что это вариант для вас, но если это тип контента, вы можете достичь этого довольно быстро, используя модуль Правила, задав правило, которое будет запускаться при обновлении или создании определенного типа контента.
источник