Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 2000 Просмотров
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Появилась необходимость в поле с возможностью выбора нескольких значений одновременно.
Лучший способ (визуальный) - это checkbox'ы
Как реализовать данный приём в Joomla 2.5?

Что я уже сделал:
admin/models/forms/myform.xml
Спойлер
[свернуть]

admin/models/fields/includecities.php
Спойлер
[свернуть]

На этом этапе встал пока. Собственно checkboxes выводится, но сохраняется только 1 значение.
Я думаю, что просто надо где-то прописать как вообще должно сохраняться (не просто id, а например id5, id8,...), и где-то прописать как сохранённые данные брать.

Собственно вопрос: где и как прописать сохранение и загрузку данных для данного типа?
« Последнее редактирование: 03.06.2013, 13:22:22 от platonische »
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Собственное поле Checkboxes
« Ответ #1 : 03.06.2013, 13:03:32 »
Получить данные из таблицы в нужном виде получилось
в файле модели доработали функцию loadFormData()
Спойлер
[свернуть]

Теперь если сохранить через базу (ручками) в поле include_cities данные типа "id2,id6" то в форме получим отмеченные 2 поля - 2 и 6.

Вопрос про сохранение остался.

Как сохранить? Точнее где переопределить переменную? Ведь на запись ломится массив, а надо строку.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Собственное поле Checkboxes
« Ответ #2 : 03.06.2013, 13:21:44 »
Для сохранения нужно переопределить метод save в модели.
Спойлер
[свернуть]

И все заработало. Всем спасибо!

Вопрос только в том правильно ли это или у Joomla есть свои инструменты для работы с этим.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Собственное поле Checkboxes
« Ответ #3 : 03.06.2013, 13:22:24 »
Чтобы из формы в $_REQUEST передавался массив надо чтобы у вас в форме name было со скобками []
В XML определите multiple="multiple"
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Собственное поле Checkboxes
« Ответ #4 : 03.06.2013, 13:24:21 »
Чтобы из формы в $_REQUEST передавался массив надо чтобы у вас в форме name было со скобками []
В XML определите multiple="multiple"
name[] за меня сделал JFormFieldCheckboxes.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Собственное поле Checkboxes
« Ответ #5 : 03.06.2013, 15:51:37 »
Еще вопрос по этому же поводу.
А где еще можно разобрать загружаемые данные.
Я сделал в модели, а можно это сделать в файле описания типа поля? Т.е. в файле admin/models/fields/includecities.php
там есть возможность пепеопределить getInput.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
RE: Собственное поле Checkboxes
« Ответ #6 : 09.06.2013, 10:13:16 »
сохраняете ID отмеченных чекбоксов в виде JSON в базе данных!
Код: php
function save($array){
if ( isset( $array['include_cities'] ) && is_array( $array['include_cities'] ) ) {
$array['include_cities'] = json_encode( $array['include_cities'] );
}
return parent::save( $array );
}
в модели делаете метод:
Код: php
public function getItem( $id = null )
{
if ( $item = parent::getItem( $id ) ) { //если вы получаете через getItem свою запись! если нет то реализовать самому получение
$item->include_cities = json_decode($item->include_cities);
}
return $item;
}
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Собственное поле Checkboxes
« Ответ #7 : 09.06.2013, 12:14:04 »
сохраняете ID отмеченных чекбоксов в виде JSON в базе данных!
Код: php
function save($array){
if ( isset( $array['include_cities'] ) && is_array( $array['include_cities'] ) ) {
$array['include_cities'] = json_encode( $array['include_cities'] );
}
return parent::save( $array );
}
в модели делаете метод:
Код: php
public function getItem( $id = null )
{
if ( $item = parent::getItem( $id ) ) { //если вы получаете через getItem свою запись! если нет то реализовать самому получение
$item->include_cities = json_decode($item->include_cities);
}
return $item;
}
Понял вас! Спасибо! Ещё бы разницу (скорость, надежность, удобство) между impode, explode и json_encode, json_decode.

И потом где-то я использовал в запросах $query->where('id IN ('.$include_cities.')');
« Последнее редактирование: 09.06.2013, 12:19:44 от platonische »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] title category

Автор spirit1086

Ответов: 4
Просмотров: 1465
Последний ответ 17.08.2015, 16:42:04
от spirit1086
[Решено] Программная регистрация пользователя во внешней бд

Автор DimkaJack

Ответов: 8
Просмотров: 2208
Последний ответ 06.08.2014, 18:32:39
от DimkaJack
[Решено] Вставить визуальный редактор в модуль

Автор mat.konstantin

Ответов: 6
Просмотров: 4306
Последний ответ 10.03.2014, 14:33:05
от mat.konstantin
[Решено] Как разобрать JURI::current() при помощи route.php?

Автор platonische

Ответов: 17
Просмотров: 3476
Последний ответ 10.01.2014, 20:55:19
от Arkadiy
[Решено] Собственная валидация в формах FrontEnd

Автор platonische

Ответов: 1
Просмотров: 1193
Последний ответ 01.08.2013, 13:16:23
от platonische