Новости Joomla

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

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Здравствуйте!
Проблема в следующем - одно из полей должно быть list'ом и хранить несколько значений, однако при сохранении в соотв. поле в БД ничего не пишется - ни индексов, ни самих значений. Хотя имена у поля и поля в таблице совпадают. Все остальные поля (text и т.д.) пишутся нормально. Как сохранить в БД данные из поля типа list с включенным multiple?
Или возможно ли как-нибудь перехватить функцию сохранения, чтобы модернизировать данные и записать их так, как надо?
В туториале об этом вообще ни слова...
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Или подскажите компоненты с подобным функционалом, чтобы разобраться на готовом... лично я таких еще не встречал
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
По идее такой список должен приходить массивом. Привидите код списка (спрячьте за тег спойлер). Кстати, Вы разрабатываете свой компонент?
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Все, разобрался.

b2z, так и есть. Joomla вообще никак не обрабатывает такие значения в основных полях, видимо, не предусмотрено. Поэтому для решения понадобилось дописать в контроллере компонента функцию save, перехватить POST и заменить значения, которые являются массивами, на их join.
Если кому-то понадобится:
Код
function save() {
$form=$_POST['jform'];
foreach($form as $field) {
 if(is_array($field)) $_POST['jform'][$field]=join($field,',');
}
return parent::save();
}

Кстати, Вы разрабатываете свой компонент?
Да, так и есть
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Ну что, не возникло больше вопросов?
Ну же, дорогой друг, выбири наконец 3 значения в поле, сохрани и посмотри, остались ли они в админке у тебя выбранными? м? Нет? Да?
Как только захочешь нормальную работу multiplate - подскажу где что добавить :)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Joomla вообще никак не обрабатывает такие значения в основных полях, видимо, не предусмотрено.
В каком плане в основных полях? А Вы пробовали добавлять multiple=true?
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
В каком плане в основных полях? А Вы пробовали добавлять multiple=true?
Видимо не совсем. Ибо возник бы вопрос, почему выбранные пункты, при повторном редактировании итема, не показываются выбранными! Ведь записать значения выбранных пунктов в БД - просто.
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
В каком плане в основных полях? А Вы пробовали добавлять multiple=true?
Пробовал, собственно, из-за этого и возник этот вопрос)
И да, установить дефолтные значения стандартными средствами также не удалось. Для этого пришлось написать спец. функции в контроллере, создающие массив option'ов (по умолчанию эта функция спрятана в недрах движка и сходу ее не модернезировать).
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Пробовал, собственно, из-за этого и возник этот вопрос)
И да, установить дефолтные значения стандартными средствами также не удалось. Для этого пришлось написать спец. функции в контроллере, создающие массив option'ов (по умолчанию эта функция спрятана в недрах движка и сходу ее не модернезировать).
Как-то вы очень сложно все делаете) Есть JForm, с помощью которого, все очень быстро делается.
Нужно всего-лишь добавить в модели в function loadFormData() строку
Код
$data->имя_поля = explode(',',$data->имя_поля);
Это разбивает строку из БД на массив.
и в файл admin->tables->компонент.php строки:
Код
public function check() {
  $this->имя_поля = implode(',',$this->имя_поля);
  return parent::check();
}
А это наоборот, собирает из массива строку, которую записывает в бд при сохранении.
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
А поля создаете с помощью JForm?
Нет. Сперва считываются нужные данные из БД, парсятся, на их основании создается массив option'ов, который и отдается для дальнейшего использования. Про JForm и его премудрости вообще не знал - в официальной документации очень сложно ориентироваться, можно банально не найти нужного, а в туториалах только основы.

xchesh, спасибо за некостыльный способ xD
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Нет. Сперва считываются нужные данные из БД, парсятся, на их основании создается массив option'ов, который и отдается для дальнейшего использования. Про JForm и его премудрости вообще не знал - в официальной документации очень сложно ориентироваться, можно банально не найти нужного, а в туториалах только основы.

xchesh, спасибо за некостыльный способ xD
Пожалуйста, лишь бы этим способом воспользовался.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Вот понадобился такой мультисписок, но к сожалению в Joomla 2.5 он не сохраняет данные, так же в родных расширениях реализацию этого ненашел. Из того что было предложено в тебе добился только сохранение только какого то 1 пункта. А как же сохранить множественный выбор!
Пытался добавить function save() { но всё равно сохраняет только 1 параметр из списка. Как быть информации в интернете почти нету.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Ох я балбес! ))) Ещё до того как нашёл эту ветку форума я разбирал родные компоненты я поменял varchar(255) на INT вот и не писалось у меня ничего кроме 1 значения. Поменял оставил код который был выше и всё сохраняет всё работает. Хорошо хоть нашёл эту ветку и смог сам обнаружить ошибку.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Кстати недавно замеченный косяк! Пустые значение не  сохраняет, потому сделайте так на тот случай если скажем значение нужно сделать 0

Цитировать
   <field
   name="parent_id"
   type="sql" 
   label="COM_PRICELEAFSHOP_CAT_VIBOR"
   query="SELECT id,name_cat FROM #__priceleafshop_cat"
   key_field="id"
   value_field="name_cat"
   description="COM_PRICELEAFSHOP_CAT_VIBOR_OPISANIE"
   multiple="true"
   default="">
   <option value="0">COM_PRICELEAFSHOP_CAT_NO_SELECT</option>
   </field>

Таким образом вы можете поставить 0, но default тут не катит. А если не поставить <option value="0">COM_PRICELEAFSHOP_CAT_NO_SELECT</option> то при диактивации элементов и последующем сохранении, значение не будет пустым оно оставит теже значения что и были.
« Последнее редактирование: 16.05.2013, 18:06:18 от klubnichkaaa »
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Кстати недавно замеченный косяк! пустые то значение не  сохраняет, потому сделайте так на тот случай если скажем значение нужно сделать 0

Таким образом вы можете поставить 0 default тут не катит. А если не поставить <option value="0">COM_PRICELEAFSHOP_CAT_NO_SELECT</option> то всё будет работать как надо в противном случае если вы диактивируете все элементы то список всё равно будет сохранён в том же порядке что и был.
Согласен, так и будет.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

iCagenda - Дополнительные поля

Автор Mitriy

Ответов: 15
Просмотров: 1433
Последний ответ 06.10.2022, 22:52:41
от Mitriy
Менеджер контактов: Создание контакта - нет кнопки сохранить

Автор Slava77

Ответов: 1
Просмотров: 540
Последний ответ 23.05.2021, 01:41:25
от Slava77
Дополнительные поля на странице списка контактов

Автор S_Layer

Ответов: 2
Просмотров: 1074
Последний ответ 15.04.2020, 08:34:45
от ruyurik
А зачем нужны поля в Joomla?

Автор Lopes-popes

Ответов: 11
Просмотров: 1255
Последний ответ 08.07.2019, 11:23:33
от Avalon
В Widgetkit не появляются доп. поля из Zoo

Автор kozhenevsky

Ответов: 0
Просмотров: 799
Последний ответ 14.12.2018, 13:48:40
от kozhenevsky