В моем пользовательском компоненте joomla я использовал тип поля SQL (item.xml):
<field name="colors" type="sql" query="SELECT id ,name FROM #__products_colors" multiple="multiple" key_field="id" value_field="name" class="inputbox"
label="colors" description="COM_PRODUCTS_FORM_DESC_ITEM_COLORS" />
На мой взгляд, я называю это поле следующим образом:
<?php echo $this->form->getInput('colors'); ?>
Что даетмне приятный и плавный выбор, например:
<select id="jform_colors" class="inputbox" multiple="multiple" name="jform[colors][]" aria-invalid="false">
<option value="1">blue</option>
<option value="2">yellow</option>
<option value="3">red</option>
<option value="4">green</option>
<option value="5">purple</option>
Когда я сохраняю это поле цветов, после выбора синего и красного, например, оно сохраняется как 1,3 в моей базе данных.Joomla делает всю работу за меня ... (СПАСИБО Joomla)
Теперь, возможно, я становлюсь жадным, но каким-то образом я ожидаю, что Joomla предварительно выберет эти значения для меня, когда я редактирую запись после сохранения.Это происходит с любым другим типом поля, так почему бы и нет?Есть ли что-то, что я забыл?
Спасибо в adv!
edit: функция привязки в ответе, я немного ее подправил.
public function bind($array, $ignore = '') {
if (isset($array['params']) && is_array($array['params'])) {
$registry = new JRegistry();
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
//print_r($array);
if (key_exists('colors', $array) && is_array($array['colors'])) {
echo "pwn";
$array['colors'] = implode(',', $array['colors']);
}
if (isset($array['metadata']) && is_array($array['metadata'])) {
$registry = new JRegistry();
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
return parent::bind($array, $ignore);
}
И НЕ использовать фильтр= "safehtml":)
Удачи всем!