Переключатель (radio) вместо выпадающего списка — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «В UMI.CMS нет типа поля «Переключатель», но исходная информация этого типа поля такая же как у…») |
Cmac (обсуждение | вклад) |
||
Строка 57: | Строка 57: | ||
мы установили, что если идентификатор поля 'vypspisok', то необходимо отобразить его в виде Переключателя, в остальных случаях выводить отображение в виде Выпадающего списка. | мы установили, что если идентификатор поля 'vypspisok', то необходимо отобразить его в виде Переключателя, в остальных случаях выводить отображение в виде Выпадающего списка. | ||
В переменной $default_value прописываются значения по умолчанию, object_id элементов справочников. Id элементов справочника можно узнать, открыв "Содержимое справочника" вашего выпадающего списка в модуле "Шаблоны данных", вкладка "Справочники" | В переменной $default_value прописываются значения по умолчанию, object_id элементов справочников. Id элементов справочника можно узнать, открыв "Содержимое справочника" вашего выпадающего списка в модуле "Шаблоны данных", вкладка "Справочники" | ||
+ | [[Категория:Модуль Обратная связь]] |
Текущая версия на 11:03, 8 сентября 2011
В 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 элементов справочника можно узнать, открыв "Содержимое справочника" вашего выпадающего списка в модуле "Шаблоны данных", вкладка "Справочники"