Переключатель (radio) вместо выпадающего списка

Материал из Umicms
Версия от 11:03, 8 сентября 2011; Cmac (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

В UMI.CMS нет типа поля «Переключатель», но исходная информация этого типа поля такая же как у Выпадающего списка, т.е. название поля и набор значений. Значит необходимо просто изменить визуальное представление имеющихся данных. Для этого воспользуемся следующим кастомным макросом, который пропишем в файле classes/modules/custom.php:

    public function radio($name, $type_id){
  	$arr_objects = umiObjectsCollection::getInstance()->getGuidedItems($type_id);
  	// Значения по умолчанию.
  	$default_value = array('30319', '30322');
  	if($name == 'vypspisok'){		
        $str = "";
    	foreach($arr_objects as $id => $title){
    	if(in_array($id, $default_value)){
          $str .= "<input type='radio' name='data[new][{$name}]' value='{$id}' checked=''> {$title} ";
        }else{
          $str .= "<input type='radio' name='data[new][{$name}]' value='{$id}'> {$title} ";
          }      
        }
          return $str;
      }else{
        $options = "";
        foreach($arr_objects as $id => $title){
          if(in_array($id, $default_value)){
            $options .= "<option value='{$id}' selected=''>{$title}</option>"; 
          }else{
            $options .= "<option value='{$id}'>{$title}</option>";
          }   
        }
        // "HTML;" - должен быть у самого левого края.
        $str=<<<HTML
          <select name="data[new][{$name}]" style="width: 205px" class="textinputs" style="width:300px;">
            <option />
            $options
          </select>
HTML;
        return $str;      
      }
      
    }

Если говорить про модуль "Обратная связь" и использование макроса %webforms add()%, то в шаблоне tpls/data/reflection/webforms.tpl, блок reflection_field_relation должен быть примерно следующий:

    <tr>
        <td style="width:100%;">
            %title% %required_asteriks%:
        </td>

        <td>
            %custom radio(%name%, %type-id%)%
        </td>
    </tr>


В нашем кастомном макросе, строкой:

if($name == 'vypspisok'){	

мы установили, что если идентификатор поля 'vypspisok', то необходимо отобразить его в виде Переключателя, в остальных случаях выводить отображение в виде Выпадающего списка. В переменной $default_value прописываются значения по умолчанию, object_id элементов справочников. Id элементов справочника можно узнать, открыв "Содержимое справочника" вашего выпадающего списка в модуле "Шаблоны данных", вкладка "Справочники"