В одной из моих форм я пытаюсь установить, $form_state['redirect']
чтобы форма отправлялась в это место после того, как пользователь нажимает одну из кнопок действий.
Если я проверяю $form_state['redirect']
как до, так и после добавления перенаправления, он равен NULL до и после и содержит правильный массив. Вот как я настраиваю перенаправление:
$form_state['redirect'] = array(
'my/custom/path/' . $nid,
array('query' => drupal_get_destination()),
);
Я хочу сохранить пункт назначения от формы, которую пользователь просматривает, до следующего пути (вот почему я звоню drupal_get_destination()
, который возвращает массив с 'destination' => 'some/path/here'
внутренней частью.
Кажется, что, поскольку в пути текущей формы уже есть место назначения, форма перенаправляется к этому месту назначения независимо от того, что я поместил в свой собственный обработчик отправки формы (см. Код выше). Я даже пытался использовать drupal_goto (), и это также не перенаправило пользователя.
источник
Спасибо за это, но по какой-то причине это не сработало, когда я попробовал. Я получил фатальную ошибку - данные, отправленные в приведенном выше примере ответа, не удовлетворяют требованиям
drupal_goto()
Это может быть потому, что этот ответ довольно старый, но я смог заставить его работать с этим:
Я знаю, что это нарушает эту заметку:
Но в этом случае вы определенно хотите перезаписать переменную. Вы не будете устанавливать это значение, если не хотите игнорировать установленные значения другого модуля. Кроме того, я думаю, что вы должны из-за способа
drupal_goto()
работы с параметром запроса. Это также может быть причиной того, что первоначальный ответ приводил к фатальным ошибкам на моем сайте.источник
$form_state['redirect']
или получить WSOD с конкурирующими перенаправлениями.установить форму #action
источник
drupal_goto()
вhook_node_insert()
ввернут вещи (потому чтоdrupal_goto()
вызовыdrupal_exit()
предотвращения нового узла могут быть не сохранены).