Recommended Posts

Добавляю очередное поле в таблицу data, тип поля выбираю checkbox. Мне нужно несколько вариантов забить (по типу select_box). Куда вносить данные?

Clip2net_170609173116.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если вы имеете ввиду мультивыбор, т.е. выбор нескольких элементов, то нужно допиливать обработчик 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 minutes ago, TopRaN said:

Если вы имеете ввиду мультивыбор, т.е. выбор нескольких элементов, то нужно допиливать обработчик 

Т.е. получается, что в движок заложен только чекбокс с бинарным выбором (т.е. типа "есть/нет")?

А как тогда получается, что вот в этом видео - 

в котором рассказано про поиск, но там автор ролика добавляет поле типа "checkbox" и на 0:52 секунде чётко видно поле для "Набор опций выбора в формате пар {key~~value}"

Это как понимать? Куда оно делось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 09.06.2017 в 20:30, Vladimir_K сказал:

Это как понимать? Куда оно делось?

Пример снят на старом варианте редактора форм возможно, где при выборе типа поля выводились все возможные поля настройки для данной колонки, а теперь они показываются-убираются в завимисоти от возможностей выбранного типа элемента.

checkbox - это только бинарные варианты, вы верно заметили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 hours ago, abushyk said:

Пример снят на старом варианте редактора форм возможно, где при выборе типа поля выводились все возможные поля настройки для данной колонки, а теперь они показываются-убираются в завимисоти от возможностей выбранного типа элемента.

checkbox - это только бинарные варианты, вы верно заметили.

И что делать, если нужен именно обыкновенный чекбокс? Т.е. возможность множественного выбора. К примеру банальная ситуация - нужно выбрать галочками наличие бытовой техники и мебели в съёмной квартире. Неужели никто не сталкивался с такой проблемой до сих пор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обыкновенный чекбокс - это и есть бинарный чекбокс)) Например поле "Холодильник" с типом чекбокса маячит нам, что если галка кликнута, то холодильник есть, если не кликнута - то хз (нет или не известно). Для определения наличя - этого выше крыши. Для ситуации когда важен набор вариантов "есть/нет/не указано" - тут уже select_box. Есть еще поле select_box с параметром multiselect=1 которое выдает варианты выбора в виде набора чекбоксов, но позволяет выбрать несколько из них одновременно. Но оно хранит значения в неудобном для поиска виде (вывести запросто, но искать по вариантам из этого поля - практически не реально) и вообще не прикольное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не путайте понятия множественного выбора (когда именно в одном селекте можно выбрать сразу несколько значений) и доступность выбора нескольких параметровв форме поиска.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 minutes ago, abushyk said:

Есть еще поле select_box с параметром multiselect=1 которое выдает варианты выбора в виде набора чекбоксов, но позволяет выбрать несколько из них одновременно. Но оно хранит значения в неудобном для поиска виде (вывести запросто, но искать по вариантам из этого поля - практически не реально) и вообще не прикольное.

Попробовал сделать так вы описали. Добавил такое поле. Именно это я и имел ввиду. Если не нужен поиск по этому полю и оно просто является информативным, то самое оно.

Но возникла другая проблема. Я добавил три варианта выбора, в поле "Параметры" прописал multiselect=1. В {key~~value} вставил вот так - {0~~пункт1}{1~~пункт2}{2~~пункт3} В редактировании объявления и в форме подачи на сайте поле появилось, с чекбоксами, как и хотел. Но когда захожу в объявление и выбираю несколько пунктов и сохраняю, то сохраняется отмеченным только первый. 

Что я делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вот так указали параметр?

744db121-94b9-4fc4-598f-9514a746722d.png.ae482ce143cec4253febceb081bd5a3c.png

ну используйте пункты с ключем 0 ни для каких вариантов, кроме варианта, означающего отсутствие выбора. Т.е. для многовыборного элемента варианта {0~~ZZZZ} вообще не должно существовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
38 минут назад, TopRaN сказал:

Не путайте понятия множественного выбора (когда именно в одном селекте можно выбрать сразу несколько значений) и доступность выбора нескольких параметровв форме поиска.

вот просто супергодное замечание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 hour ago, TopRaN said:

Не путайте понятия множественного выбора (когда именно в одном селекте можно выбрать сразу несколько значений) и доступность выбора нескольких параметровв форме поиска.

Я про форму поиска вообще ничего не говорил.

Не все поля из формы подачи объявления участвуют в поиске. Ну т.е. может на вашем, системном уровне и все, на уровне моделей, функций, процедур или чего там ещё. Но я говорю про обычного пользователя. В объявлении могут быть десятки параметров. И часть из них участвует в поиске, а часть просто является информационными полями для человека. По таким полям никто, ничего не ищет.  Речь в первую очередь шла об этом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
40 minutes ago, abushyk said:

вот так указали параметр?

744db121-94b9-4fc4-598f-9514a746722d.png.ae482ce143cec4253febceb081bd5a3c.png

ну используйте пункты с ключем 0 ни для каких вариантов, кроме варианта, означающего отсутствие выбора. Т.е. для многовыборного элемента варианта {0~~ZZZZ} вообще не должно существовать.

Ну у меня всё так и настроено. Но всё равно не срабатывало. Но после того, как я заменил значение поля "Название колонки (системное только латиница)" с "nazvanie" на "nazvanie_id" - у меня всё заработало.

Получается, что при добавлении своего поля, нужно в название поля латиницей обязательно в конец добавлять "_id"? Или это у меня какая-то магия произошла?:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

нет. никакого требования относительно _id  в имени нет.

эта настройка не совсем официальная, так что какие-то глюки на ней могут иметь место. а могут и не иметь - в принципе поле простое как доска.

может быть проблема в кешировании моделей. т.е. модели закешировались и не перечитались после дбавления параметра. а потом вы меняли имя и кеш слетел по какой-то причине и данные обновилсь.

так же может быть, что когда создавалось это поле под обычный селект, колонка в БД под него была создана соотвествующя - под целое число. и упихать туда значения мултиселекта нельзя, так как оно имеет вид строки чисел разделенных запятой. а сменив имя, вы создали новую физическую колонку в БД, которая по дефолту создается как под хранения строки, что подходит я мультиселекта. последний вариант самый вероятный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 minutes ago, abushyk said:

так же может быть, что когда создавалось это поле под обычный селект, колонка в БД под него была создана соотвествующя - под целое число. и упихать туда значения мултиселекта нельзя, так как оно имеет вид строки чисел разделенных запятой. а сменив имя, вы создали новую физическую колонку в БД, которая по дефолту создается как под хранения строки, что подходит я мультиселекта. последний вариант самый вероятный.

Это поле изначально было типа "checkbox". Потом я, что бы не плодить лишнего его заменил на "select_box". Может с этим связано. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Vladimir_K сказал:

Это поле изначально было типа "checkbox".

вот тут собака и порылась. под чекбокс создается без вариантов поле типа INT - исключительно целое число. так что 100% последний вариант имел место. Вообще с подменой типов полей нужно быть осторожно, они иногда могут быть не совместимы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 minutes ago, abushyk said:

вот тут собака и порылась. под чекбокс создается без вариантов поле типа INT - исключительно целое число. так что 100% последний вариант имел место. Вообще с подменой типов полей нужно быть осторожно, они иногда могут быть не совместимы.

Короче, если решил новое поле создавать, то старое лучше снести и создать новое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, Vladimir_K сказал:

Короче, если решил новое поле создавать, то старое лучше снести и создать новое.

почти. поле вы можете удалить из Редактора форм. Но что бы случайно не убить все данные что были в этом поле при ошибочном удалении, рек\\дактор форм не удаляет физическую колонку в таблице в БД для возможности создать одноименное поле и продолжить как ни в чем не бывало. это удобно, но, удалив поле, и, через полгода создав новое с таким же именем, вы можете удивиться, так как в нем уже будут данные, если оно совместимо по формату. Поэтому если 100% уверены, что этому полю все и его можно удалять, то удаляем в Редакторе, а потом еще и через phpMyAdmin в соотв. таблице трем колонку.

Вероятно я добавлю потом в редактор еще и unsafe-удаление, которое будет удалять с концами без вариантов, но сейчас описанное - лучший вариант из существующих.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите ещё один момент. При выводе на сайт элементы этого списка идут через запятую. Т.е. "пункт1,пункт2,пункт3" т.д.

Где добавить пробел после запятой? Смотрится не очень эстетично. Что бы было "пункт1, пункт2, пункт3"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, abushyk сказал:

почти. поле вы можете удалить из Редактора форм. Но что бы случайно не убить все данные что были в этом поле при ошибочном удалении, рек\\дактор форм не удаляет физическую колонку в таблице в БД для возможности создать одноименное поле и продолжить как ни в чем не бывало. это удобно, но, удалив поле, и, через полгода создав новое с таким же именем, вы можете удивиться, так как в нем уже будут данные, если оно совместимо по формату. Поэтому если 100% уверены, что этому полю все и его можно удалять, то удаляем в Редакторе, а потом еще и через phpMyAdmin в соотв. таблице трем колонку.

Вероятно я добавлю потом в редактор еще и unsafe-удаление, которое будет удалять с концами без вариантов, но сейчас описанное - лучший вариант из существующих.

а каким запросом в phpAdmin стереть данные в одном оле, ц нас как то случилась заминочка, сначала сделали к примеру поле чекбокс , а потом поменяли его на сейф стринг. в итоге у нас теперь при выводе данного поля в них существует значение 0 (ноль)
в итоге чтобы поле совсем не убивать наверное правильнее как то его отформатировать чтобы не произошло казусов
к примеру назвали поле "pole1"  и хотим создать к примеру новое поле - "pole2" и использовать правильно потом "pole1" и "pole2" чтобы они все были пустые

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UPDATE re_ТАБЛИЦА SET `ИМЯ_КОЛОНКИ`='' WHERE 1

или

UPDATE re_ТАБЛИЦА SET `ИМЯ_КОЛОНКИ`=0 WHERE 1

в зависимости от того какой тип у колонки - строковой или числовой

ПС. Вокруг имени колонки обратные апострофы, не обычные текстовые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Vladimir_K сказал:

При выводе на сайт элементы этого списка идут

в списке или в карточке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В карточке можно использовать 

{if $data.FIELD.value_variants_array|count>0}
	{', '|implode:$data.FIELD.value_variants_array} 
{/if}

Для списка наверное вообще не реал. Оно в таком виде не обрабатывается.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 minutes ago, abushyk said:

в списке или в карточке?

Я не знаю, что вы имеете ввиду под "карточкой". На странице с объявлением. Там, где большие фотографии. Т.е. на site.com/category/realty25.html

И ещё сразу, что бы темы лишние не плодить. Поле для ввода телефона можно сделать множественным? Что бы можно было указать несколько телефонов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

UPDATE re_ТАБЛИЦА SET `ИМЯ_КОЛОНКИ`='' WHERE 1

или


UPDATE re_ТАБЛИЦА SET `ИМЯ_КОЛОНКИ`=0 WHERE 1

в зависимости от того какой тип у колонки - строковой или числовой

ПС. Вокруг имени колонки обратные апострофы, не обычные текстовые.

у нас поле называется 
textaction
тип safe_string
следовательно чтобы преобразовать данное поле в оконцовке к реальному сейф-стринг и пустому значению во всех объявлениях , в том числе убрав в некоторых уже имеющихся некоторые значения например ноль, единица или какое либо текстовое значение нам нужно написать так?
update re_data set `textaction`='' where 1
про ковычки не совсем поняли поэтому уточним 
во круг текстового поля ставим ковычки где на клавиатуре буква "Ё" ? русская

и еще вопрос а как расшифровывается действие так как в нем стоит where 1
как мы понимаем
обновить колонку re_data установив значение колонки `textaction` равную 'пусто' а вот дальше что за where 1 ?
это обновится везде или только в объявлении со значением 1 ?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 minutes ago, abushyk said:

Для списка наверное вообще не реал. Оно в таком виде не обрабатывается.

Наверное речь всё таки идёт про то, что вы называете "карточкой". 

4 minutes ago, abushyk said:

{if $data.FIELD.value_variants_array|count>0}
	{', '|implode:$data.FIELD.value_variants_array} 
{/if}

 

А куда сие пихать? Я нашёл похожий код в файле realty_view.tpl, но там он выглядит немного по другому:

<tr><th>{$data_item.title}</th><td>{$data_item.value_string|print_r}{', '|implode:$data_item.value_string}</td></tr>

Вроде похоже, на тот код, что вы дали, но в моём случае после запятой уже стоит пробел. Поэтому наверное это не оно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас