У меня проблема с формами Drupal. Не могу придумать, как ее решить, и мне было интересно, есть ли у моего мозга решение моей проблемы.
У меня есть эта форма:
<?php
function mymodule_myform(){
$form['#action'] = url('search/cards');
$form['whatwhere']['what'] = array(
'#type' => 'textfield',
'#title' => t('What?'),
'#maxlength' => 80,
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Search'),
);
}
?>
Который, как вы можете видеть, должен предоставить всю информацию www.example.com/search/cards
.
Это действительно отправит мою форму на желаемый URL. Однако, без хука mymodule_menu()
, определяющего путь, он закончится 404.
Итак, я добавляю:
<?php
function mymodule_menu(){
$items['search/%'] = array(
'title' => t('Search Results'),
'page callback' => 'mymodule_main',
'access arguments' => array('access content'),
'file' => 'mymodule.inc',
);
}
?>
И в mymodule.inc
файле я создам свою функцию mymodule_main()
:
<?php
function mymodule_main(){
print_r($_POST);
die(); // ### Note the die(); ###
return 'Just searched: '. $_POST['what'];
}
?>
Если я оставлю это в точности так, как есть, то, конечно, PHP завершит выполнение скрипта сразу после вывода на экран информации о моей форме. Все хорошо!
Однако, если я удаляю die()
, кажется, что функция вызывается дважды, и во втором вызове больше не заполняется $ _POST. Кажется, mymodule_menu()
переопределяет каким-то образом независимо от того, что делает обработчик отправки формы ...
Вопрос: Как я могу отправить свою форму на любую другую внутреннюю страницу без 404 и сохранить информацию о форме?
Заранее спасибо.