Установить для всех переключателей значение true или false в osCommerce или только один как true?

Я добавил несколько переключателей в форму PHP в osCommerce. Я планирую добавить еще кучу, но пока у меня их четыре. Мне интересно, нужно ли мне установить все переключатели как истинные/ложные или только один экземпляр, который я хочу, как истинный.

Вот код, который у меня есть:

if (!isset($pInfo->tab_id)) $pInfo->tab_id = '1';

switch ($pInfo->tab_id) {
  case '0': $none_tab_id = true; $shirt_tab_id = false; 
            $coverall_tab_id = false; $glove_tab_id = false; 
            break;
  case '1': $coverall_tab_id = true; $shirt_tab_id = false; 
            $none_tab_id = false; $glove_tab_id = false; 
            break;
  case '2': $coverall_tab_id = false; $shirt_tab_id = true; 
            $none_tab_id = false; $glove_tab_id = false; 
            break;
  case '3': $glove_tab_id = true; $coverall_tab_id = false; 
            $shirt_tab_id = false; $none_tab_id = false; 
            break;
   default: $coverall_tab_id = false; $shirt_tab_id = true; 
            $none_tab_id = false;
}     

.

<?php 

echo '&nbsp;None' . tep_draw_radio_field('tab_id', '0', $none_tab_id) . 
     '&nbsp;coveralls' . tep_draw_radio_field('tab_id', '1', $coverall_tab_id) .
     '&nbsp;Shirts' .tep_draw_radio_field('tab_id', '2', $shirt_tab_id) . 
     '&nbsp;Gloves' . tep_draw_radio_field('tab_id', '3', $glove_tab_id); 

?>

osCommerce определяет функцию tep_draw_radio_field следующим образом:

tep_draw_radio_field($name, $value = '', $checked = false, $compare = '')

Нужно ли устанавливать для всех переменных значение false в каждом случае или я могу просто установить значение true для той, которую хочу?


person Sackling    schedule 05.10.2011    source источник


Ответы (4)


В функции tep_draw_radio_field() единственным обязательным параметром является переменная имени, которую будет использовать переключатель.

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

Вам не нужно кодировать все переключатели в значение true или false. Аргумент по умолчанию — false, и все, что не задано явно при вызове функции, будут установлены как таковые.

Просто установите тот, который вам нужен, как true. Когда вы это сделаете, дважды убедитесь, что это также и третий аргумент.

person random    schedule 05.10.2011
comment
Спасибо, я не знаю, почему я просто не попробовал это. - person Sackling; 06.10.2011

Почему бы просто не сделать что-то подобное?

if (!isset($pInfo->tab_id)) $pInfo->tab_id = '1';

$none_tab_id = ($pInfo->tab_id == '0');
$coverall_tab_id = ($pInfo->tab_id == '1');
$shirt_tab_id = ($pInfo->tab_id == '2');
$glove_tab_id = ($pInfo->tab_id == '3');

if(!($none_tab_id || $coverall_tab_id || $glove_tab_id || $shirt_tab_id)) {
    $shirt_tab_id = true;
}
person Amber    schedule 05.10.2011
comment
Для чего нужна 3-я порция? if(!($none_tab_id || $coverall_tab_id || $glove_tab_id || $shirt_tab_id)) { $shirt_tab_id = true; - person Sackling; 05.10.2011

Вы можете ужесточить оператор switch:

$none_tab_id = false; 
$shirt_tab_id = false;                 
$coverall_tab_id = false; 
$glove_tab_id = false; 
switch ($pInfo->tab_id) {
  case '0': $none_tab_id = true; 
            break;
  case '1': $coverall_tab_id = true; 
            break;
  case '2': $shirt_tab_id = true; 
            break;
  case '3': $glove_tab_id = true;  
            break;
   default: $shirt_tab_id = true; 

}   
person Scott C Wilson    schedule 05.10.2011
comment
Спасибо, это тоже сработает, но, видимо, мне даже не нужно устанавливать их как ложные. - person Sackling; 06.10.2011

Вам не нужно кодировать все переключатели в значение true или false. Аргумент по умолчанию равен false, и все, что не задано явно при вызове функции, будут установлены как таковые.

Просто установите тот, который вам нужен, как истинный. Когда вы это сделаете, дважды убедитесь, что это также и третий аргумент.

person vicky    schedule 17.10.2011