различный $form['#action'] в зависимости от выбора радиоса

Главные вкладки

Аватар пользователя g2100636 g2100636 11 ноября 2013 в 18:15

Подскажите пожалуйста как реализовать такую штуку:
в зависимости от выбора опции радоса, нужно чтобы форма отправлялась в разные обработчики..
например при выборе первой опции, срабатывает стандартная функция ____form_submit()
а при выборе второй опции нужно чтобы форма отравила данные на другой сервер. т.е. нужно воспользоваться $form['#action'] = '__';
'#states' => на него не поставить....

Комментарии

Аватар пользователя alextdk alextdk 11 ноября 2013 в 19:55

Вариантов масса, например можно сделать вот так:

<?php
  $form
['radios'] = array(
    
'#type' => 'radios',
    
'#title' => t('Radios'),
    
'#options' => array(
      
'first' => 'First',
      
'second' => 'Second',
    ),
  );
  
$form['first-submit'] = array(
    
'#type' => 'submit',
    
'#value' => 'First',
    
'#submit' => array('first_form_submit'),
    
'#states' => array(
      
'visible' => array(
        
':input[name="radios"]' => array('value' => 'first'),
      ),
    ),
  );
  
$form['second-submit'] = array(
    
'#type' => 'submit',
    
'#value' => 'Second',
    
'#submit' => array('second_form_submit'),
    
'#states' => array(
      
'visible' => array(
        
':input[name="radios"]' => array('value' => 'second'),
      ),
    ),
  );
?>
Аватар пользователя g2100636 g2100636 11 ноября 2013 в 23:54

спасибо за ответ)
а как сделать чтобы второй сабмит отправлял данные на заданную ссылку?
т.е. нужен пост запрос на другой сервер..

Аватар пользователя alextdk alextdk 12 ноября 2013 в 10:54

Пост запрос на другой сервер с помощью Form API не сделать, но можно сделать хитрый маневр, точнее самый очевидный, в своем сабмите инициализировать curl и делать какие угодно запросы куда угодно. Если конечно вы знакомы с курлом, но ничего сложно там нету, составить пост запрос на другой сервак плевое дело.

Аватар пользователя g2100636 g2100636 12 ноября 2013 в 17:57

ок.. спасибо)

с курл к сожалению пока еще не знаком..)

благо оказалось что другой сервер может так же принимать гет запросы, поэтому во втором обработчике выставил drupal_goto($link);