Вопрос с AJAX. Или как вбить условие в #prefix?

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

Аватар пользователя Fenixeales Fenixeales 7 апреля 2014 в 14:46

Всем привет! Пишу модуль. Имеется следующий код формочки:

<?php
for($i=0$i<22$i++)
{    
            
/*Огранка для каждой карты*/
            
$form['field_set']['field_set_'.$i] = array(
            
'#type'    => 'fieldset',
            
'#prefix'=>'<div id="ajax-div">',
            
'#suffix'=>'</div>',
            );
            
$temp_img='1';
            
/*Картинка карты*/
            
$form['field_set']['field_set_'.$i][$i.'_Card_img'] = array(
            
'#prefix' =>card_img($i.'.jpg'), /*это важно менять в зависимости от выбранного радио батона*/
            
);
            
            .......
            
            
/*Радио выбор*/
            
$form['field_set']['field_set_'.$i]['inv_field_set_'.$i][$i.'_radio_position'] = array(
            
'#type' => 'radios',
            
'#title' => t('Положение карты:'),
            
'#options' => array(
                
'up'   => t('Прямое'),
                
'down' => t('Перевёрнутое'),
                ),
            
'#default_value' => isset($node->active) ? $node->active 'up',                
            
'#ajax' => array(
                
'callback' => 'taro_test_page_form_callback',
                
'wrapper' => 'ajax-div',
                ),
            );
        }
?>

Функция Card_img просто вставляет в свойство #prefix картику. Мне нужно, чтобы при нажатии на радио баттон 'up' в свойстве #prefix менялось значение на card_img('-'.$i.'.jpg').
Вопрос: как правильно прописать AJAX функцию, что нужно для этого заменить или добавить.
Если ещё проще, то мне нужно что-то вроде:

<?php
if($form_state['values'][$i.'_radio_position']==up){
   
$form_state['values'][$i.'_Card_img']['#prefix']=card_img($i.'.jpg');
}else {
   
$form_state['values'][$i.'_Card_img']['#prefix']=card_img('-'.$i.'.jpg');}
?>

Это условие нужно как-то впихнуть в #prefix и как-то прописать с помощью AJAX обновление элемента каждого [$i.'_Card_img'].

Комментарии

Аватар пользователя Plazik Plazik 7 апреля 2014 в 21:27

Типо так надо:

<?php
for($i=0; $i<22; $i++) {

$card_img = card_img('-'.$i.'.jpg');

if($form_state['values'][$i.'_radio_position'] == up){
$card_img = card_img($i.'.jpg');
}

/*Огранка для каждой карты*/
$form['field_set']['field_set_'.$i] = array(
'#type' => 'fieldset',
'#prefix'=>'

',
'#suffix'=>'

',
);
$temp_img='1';
/*Картинка карты*/
$form['field_set']['field_set_'.$i][$i.'_Card_img'] = array(
'#prefix' =>$card_img, /*это важно менять в зависимости от выбранного радио батона*/
);

.......

/*Радио выбор*/
$form['field_set']['field_set_'.$i]['inv_field_set_'.$i][$i.'_radio_position'] = array(
'#type' => 'radios',
'#title' => t('Положение карты:'),
'#options' => array(
'up' => t('Прямое'),
'down' => t('Перевёрнутое'),
),
'#default_value' => isset($node->active) ? $node->active : 'up',
'#ajax' => array(
'callback' => 'taro_test_page_form_callback',
'wrapper' => 'ajax-div',
),
);
}?>

Смотрите еще модуль Examples, там много документированных примеров.

Аватар пользователя Fenixeales Fenixeales 9 апреля 2014 в 13:44

"Plazik" wrote:
Типо так надо:

Не удачный пример. Данный код выполняется в цикле. Переменная $i счётчик. Есть ещё варианты?