FormIt не сохраняет все выбранные значения с помощью bootstrap-select
Всем привет.
Использую для множественного выбора вот такой инструмент на фронт-энде developer.snapappointments.com/bootstrap-select/examples/
Через FormIt на фронт-энде пользователь заполняет форму и отправляет ее. После этого создается ресурс на основе заполненных полей. Всё работает (заполнение всех полей), кроме этого мульти-селекта: сохраняется только первое выбранное значение, а остальные — нет (при выбранных 3-5 категорий).
Если сделать всё чекбоксами, то сниппет обрабатывает всё правильно: все 3-5 категорий сохраняются в одном ТВ (в админке это тоже мульти-селект).
Можете помочь разобраться, пожалуйста?
Использую для множественного выбора вот такой инструмент на фронт-энде developer.snapappointments.com/bootstrap-select/examples/
Через FormIt на фронт-энде пользователь заполняет форму и отправляет ее. После этого создается ресурс на основе заполненных полей. Всё работает (заполнение всех полей), кроме этого мульти-селекта: сохраняется только первое выбранное значение, а остальные — нет (при выбранных 3-5 категорий).
Если сделать всё чекбоксами, то сниппет обрабатывает всё правильно: все 3-5 категорий сохраняются в одном ТВ (в админке это тоже мульти-селект).
Можете помочь разобраться, пожалуйста?
Комментарии: 10
Не туда написал?
Сумбурно (на мой взгляд) вы описали задачу.
Сам по себе Formit не создает ресурсы, наверняка вы используете для этого какой-то самодельный сниппет, который вызываете как хук для Formit. О нем вы не сказали не слова, но именно в нем и нужно разбираться, там отлавливать какие данные приходят из формы, в каком виде и как их добавить в ресурс.
Сам по себе Formit не создает ресурсы, наверняка вы используете для этого какой-то самодельный сниппет, который вызываете как хук для Formit. О нем вы не сказали не слова, но именно в нем и нужно разбираться, там отлавливать какие данные приходят из формы, в каком виде и как их добавить в ресурс.
Привет. Спасибо за ответ.
Мой код тупо отлавливает все поля и обрабатывает их.
Мой код тупо отлавливает все поля и обрабатывает их.
<?php
$doc = $modx->getObject('modResource', array('id' => $hook->getValue('resource_id')));
if (empty($doc)) {
$doc = $modx->newObject('modResource');
$doc->set('createdby', $modx->user->get('id'));
} else {
$doc->set('editedby', $modx->user->get('id'));
}
$allFormFields = $hook->getValues();
foreach ($allFormFields as $field => $value) {
if ($field !== 'spam' && $field !== 'resource_id') {
$doc->set($field, $value);
}
//we need to parse the title into the alias
if ($field == 'pagetitle') {
//replace spaces with -
$alias = preg_replace('/[\' \']/', '-', $value);
//remove non alpha and a common injection string
$alias = preg_replace('/[^a-z0-9\.\x0B\-]/i', '', $alias);
//this is the standard revo regexp
// \0\x0B\t\n\r\f\a&=+%#<>"~:`@\?\[\]\{\}\|\^'\
}
}
// now set the alias
$doc->set('alias', $alias);
$isnew = $doc->isNew();
if ($doc->save()) {
if ($isnew) {
$doc->set('alias', $doc->get('alias' . '-' . $doc->get('id')));
$doc->save();
}
}
//resource settings
$doc->set('template', '3');
$doc->set('parent', '30');
$doc->set('hidemenu', '1');
$doc->set('published', '0');
$doc->set('show_in_tree', '0');
//$time = date('Y-m-d H:i:s', strtotime('+10 minutes')); //Finds current time
//$doc->set('unpub_date', '$time'); //needs to set unpublish date to 10min after published
$doc->save();
foreach ($allFormFields as $field => $value) {
if ($tv = $modx->getObject('modTemplateVar', array('name' => $field))) {
/* handles checkboxes & multiple selects elements */
if (is_array($value)) {
$featureInsert = array();
while (list($featureValue, $featureItem) = each($value)) {
$featureInsert[count($featureInsert)] = $featureItem;
}
$value = implode('||', $featureInsert);
}
$tv->setValue($doc->get('id'), $value);
$tv->save();
}
}
$modx->cacheManager->refresh();
return true;
По коду видно, что ловим все ТВшки и засовываем их в соответствующие поля, если их много, то соединяем с помощью разделителя ||
В том и дело, что bootstrap-select отправляет только первый выбранный элемент. При этом мультиселекты в виде галочек — работает корректно с этим скриптом.
Я так понимаю, что bootstrap-select как-то не всё отправляет?
Может кто помочь разобраться, пожалуйста?
В том и дело, что bootstrap-select отправляет только первый выбранный элемент. При этом мультиселекты в виде галочек — работает корректно с этим скриптом.
Я так понимаю, что bootstrap-select как-то не всё отправляет?
Может кто помочь разобраться, пожалуйста?
Ребят, помогите, пожалуйста, разобраться.
Прошу помощи у русскоязычного сообщества MODX Revolution, пожалуйста.
Вместе в будущее с MODX 3!
Вместе в будущее с MODX 3!
stackoverflow.com/questions/25267238/values-submitted-by-a-form-with-multiple-in-bootstrap-select
У select name указан со скобками []?
У select name указан со скобками []?
Привет,
спасибо за ответ!
Нет, не указан, код уже поправил. После теста отпишусь.
UPD: Спасибо за помощь! Заработало!
Я так понял, что [] обозначают массив данных, когда просто select — это только одно значение, поэтому в мануалах нет [].
Правильно понял?
спасибо за ответ!
Нет, не указан, код уже поправил. После теста отпишусь.
UPD: Спасибо за помощь! Заработало!
Я так понял, что [] обозначают массив данных, когда просто select — это только одно значение, поэтому в мануалах нет [].
Правильно понял?
Спасибо, получилось.
Отлично. Да, [] в name означают, что будет массив
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.