В общем разобрался с горем пополам с траблом. И сделал так чтобы у меня заработало. Правда с шаманскими обрядами, бубном и работает не совсем прозрачно для понимания, но работает
Трабл.
Оказывается (по крайней мере знающие люди мне сказали так) что каждый кто занимается HTML наступает на эти грабли.
Того кто это придумал нужно повесить на столбе наверное, но сделано так, что элемент checkbox в форме шлет свое значение в POST только если установлен. А если не установлен, то в POST о нем вообще ничего не будет передано, даже его имя.
Ну и разумеется Joomla то в таблицу сохраняет значения только разбирая POST. А раз там name checkbox нет, то в базу и ни чего нового не сохраняется.
Таким образом установить checkbox можно и значение запишется в базу, а снять его уже нельзя.
Теперь как я лечил для админ части компонента. До конца сам не понимаю пока механизм, но работает.
1. В XML файл пишем
<field
name="lic"
type="checkbox"
label="lic"
description="lic"
/>
value и default прописывать нельзя иначе все рушится.
lic - меняем на свое название
2. В <название компонента>/tables в класс JTable PHP файла пишем:
public function bind($array, $ignore = '')
{
if (!isset($array['lic'])){
$array['lic'] = '0';
}
return parent::bind($array, $ignore);
}
lic - меняем на свое название
После этого в таблицу начинают сохраняться значения и в форме checkbox устанавливается правильно при чтении из таблицы.
При этом в таблицу пишутся значения:
0 - если checkbox не установлен
поле пустое - если checkbox установлен.
P.S.: Конечно хотелось бы чтобы значения в таблицу писались 0 и 1 соответственно для снятого и установленного checkbox. Но увы, сколько Я не бился - такого результата достичь не смог.
Хотя казалось бы проинвертируй - напиши
if (isset($array['lic'])){
$array['lic'] = '1';
}
и все заработает. Но не работает