Можно ли добавить дополнительные элементы формы в функции проверки или отправки в модуль drupal 7? Следующий код работает, и изображение отображается в форме:
function test1_form($form, &$form_state) { $form['image']=array( '#markup'=>'<img src="sites/all/modules/create_ad/th.jpeg"><br/>', //replace with your own image path ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Submit', ); }
но когда я пытаюсь отобразить изображение после отправки в функции отправки, например, следующее, это не работает:
function test1_form($form, &$form_state) { $form['submit'] = array( '#type' => 'submit', '#value' => 'Submit', ); } function test1_form_submit($form,&$form_state) { $form['image']=array( '#markup'=>'<img src="sites/all/modules/create_ad/th.jpeg"><br/>', //replace with your own image path ); }
Любая положительная помощь приветствуется. Благодарю.
Вы можете следовать методу многоэтапной формы, чтобы добавить дополнительные поля в форму после отправки.
Вот сообщение в блоге, в котором говорится об одном подходе к многошаговым и может дать вам некоторое представление.
В основном, в вашей функции отправки вы сохраняете свои значения и устанавливаете форму для перестройки. Затем в вашей форме вы проверяете эти сохраненные значения и добавляете новые поля, если они есть.
Пример:
<?php function test1_form($form, &$form_state) { if (isset($form_state['storage']['show-image'])){ $form['image']=array( '#markup'=>'<img src="sites/all/modules/create_ad/th.jpeg"><br/>', //replace with your own image path ); } $form['submit'] = array( '#type' => 'submit', '#value' => 'Submit', ); } function test1_form_submit($form,&$form_state) { $form_state['rebuild'] = TRUE; $form_state['storage']['show-image'] = true; }
Вот еще один способ сделать это с Ajax. Таким образом, вы не получите перезагрузки страницы, так как только изображение будет загружено в div с идентификатором обертки.
Вот код:
function test_menu() { $items = array(); $items['test'] = array( 'title' => 'test', 'page callback' => 'drupal_get_form', 'page arguments' => array('test1_form'), 'access callback' => array(TRUE), 'type' => MENU_CALLBACK, ); return $items; } function test1_form($form, &$form_state) { $form['submit'] = array( '#type' => 'button', '#value' => t('Submit'), '#name' => 'add', '#ajax' => array( 'callback' => 'ajax_load_picture_callback', 'wrapper' => 'wrapper', 'method' => 'replace', 'effect' => 'fade', ), ); $form['image'] = array( '#markup' => '', '#prefix' => '<div id="wrapper">', '#suffix' => '</div>', ); if (array_key_exists('triggering_element', $form_state) && array_key_exists('#name', $form_state['triggering_element']) && $form_state['triggering_element']['#name'] == 'add') { $form['image']['#markup'] ='<img src="themes/bartik/logo.png"><br/>'; //replace with your own image path } return $form; } function ajax_load_picture_callback($form, $form_state) { return $form['image']; } function test1_form_submit($form, &$form_state) { }