Отображение списка в форме "многие ко многим"
Здравствуйте. Пытаюсь понять что упускаю. Есть поле "many_to_many" с включенным параметром long_list.
При выводе формы в шаблоне она появляется обычным select без записей, что логично при условии, что таблица содержит более 35 тыс. записей. Другие поля с объемом примерно в 1,5тыс. записей выводятся в селект.
Вопрос в том, как сделать по аналогии с админкой, автопоиск записи?
Добрый день, вам нужно добавить JS autocomplete plugin, например вот этот https://github.com/devbridge/jQuery-Autocomplete
Отправляете ajax запрос, извлекаете данные по названию, отдаете назад json с названиями и id, и при выборе в списке, подставляете id в скрытый input вашего поля.
//В ajax файле выбирайте записи с помощью like $rows = $mv -> model -> select(['name->like' => 'текст', 'limit->' => 10]);
Все понятно, спасибо.
Еще такой вопрос. Делаю фильтрацию, а при фильтре многие ко многим - это всегда фильтр по id. Вопрос в том, может ли фильтр принимать массив значений id, после их выборки name->like? И если да, то как добавить их в параметры фильтра. Пробовал ради теста задать, но дебаг выдает null.
Или то как я хочу штатном фильтре в принципе не возможно?
$mv -> notices -> filter -> setValue('categories', [20,111] ); Debug :: pre( $mv -> notices -> filter -> getValue('categories'));
Фильтр многие ко многим может принимать список значений при отображении списком из чекбоксов, можно опробовать эмитировать этот функционал
Тут есть метод setDisplayCheckboxTable($field, $columns)
https://mv-framework.ru/filtratciia
//Попробуйте так $mv -> notices -> filter -> setDisplayCheckboxTable('categories', 1); //И далее передать список значений в строке через запятую $mv -> notices -> filter -> setValue('categories', '125,44,47');
Спасибо, сработало, но только после отключения long_list, видимо шалости ядра при выборки из таблицы с большим набором данных, с которых и начался данный сабж.
А можно как-то в шаблоне включать или отключать? Я пробовал принудительно назначить, дебаг говорит, что свойство применяется, но форма при формировании не учитывает данное изменение, можно ли передать как-то измененное свойство в форму?
$mv -> notices ->setFieldProperty('categories', 'long_list', false); Debug :: pre($mv -> notices ->getFieldProperty('categories', 'long_list'));
Получилось, я прописал setFieldProperty после runFilter, а надо было до. Теперь код работает. Но сама ситуация все равно выглядит как баг, ладно не формируется список значений для селекта или чекбоксов, но значения все равно должен принимать.