У меня проблема с форматами Drupal. Не могу придумать способ его решения, и мне было интересно, есть ли у какого-нибудь мозга решение моей проблемы.Как отправить форму 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 и сохранить информацию о моей форме?
Заранее спасибо.
Nope. Это не тот случай, у меня есть уникальное имя модуля. «Поиск» используется только в этом примере. Спасибо, в любом случае. – acm