Цитата |
---|
Максим Задубин пишет: а где в коде обхявления моего юзертайпа можно указать что поле множественное? |
30.10.2010 23:36:19
хм. верно.
но у меня странно как-то. я в настройках свойства инфоблока ставлю галку - множественное. потом же , когда вывожу массива arProperty из функции GETpropertyFieldHTML значение свойства выводится как "N". Причем если после сохранения свойства снова зайти в него - то галка "множественно" там установлена.. в чем тут может быть дело? |
|
|
|
30.10.2010 23:39:57
Нужно смотреть код
|
|
|
|
31.10.2010 00:07:46
с этим разоабрался.
тут опять засада. Если ставить галку "множественное поле", то он указанное количество раз выводит все мои формы и селекты. Я думал "множественно" сделано не для этого. у меня же просто select с атрибутом multiple. и в нем можно выбирать несколько значений. но когда выбрал и нажимаю сохранить, не задав имя элементу чтобы вылезла ошибка и делаю print массива value - то там лежит только одно значение из выбранных элементов. похоже того у которого самый большой индекс в селекте. т.е. я так пониамю уже до функции converttodb Не доходят все выбранные значения в моем селекте а только одно. |
|
|
|
31.10.2010 00:11:33
|
|||||
|
|
31.10.2010 00:13:49
опишу ситуацию подробнее:
выбрал 5 элементов в моем селекте. нажимаю сохранить. (у элементов значения идут просто цифры, т .е. по идеи должен быть массив из 5 цифр) в convertodb делаю дамп входящих массивов. выдает сделующее -почему-то USER_TYPE_SETTINGS повторяется 2 раза -в массиве value Только одно значение - причем как видно функция converttodb вызвалась 2 раза.. v convertTODB ------------------property-------------------- Array ( [ID] => 152 [TIMESTAMP_X] => 2010-10-31 00:10:28 [IBLOCK_ID] => 13 [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [CODE] => priviazka [DEFAULT_VALUE] => [PROPERTY_TYPE] => G [ROW_COUNT] => 1 [COL_COUNT] => 30 [LIST_TYPE] => L [MULTIPLE] => N [XML_ID] => [FILE_TYPE] => [MULTIPLE_CNT] => 15 [TMP_ID] => [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [SEARCHABLE] => N [FILTRABLE] => N [IS_REQUIRED] => N [VERSION] => 1 [USER_TYPE] => rope [USER_TYPE_SETTINGS] => Array ( [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [DEFAULT_VALUE] => [CODE] => priviazka [ROW_COUNT] => 1 [COL_COUNT] => 30 [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [FILTRABLE] => N [SEARCHABLE] => N [MULTIPLE] => N [MULTIPLE_CNT] => 15 [IS_REQUIRED] => N [FILE_TYPE] => [LIST_TYPE] => L [USER_TYPE] => rope [PROPERTY_TYPE] => G [USER_TYPE_SETTINGS] => Array ( [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [DEFAULT_VALUE] => [CODE] => priviazka [ROW_COUNT] => 1 [COL_COUNT] => 30 [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [FILTRABLE] => N [SEARCHABLE] => N [MULTIPLE] => Y [MULTIPLE_CNT] => 15 [IS_REQUIRED] => N [FILE_TYPE] => [LIST_TYPE] => L [USER_TYPE] => rope [PROPERTY_TYPE] => G [USER_TYPE_SETTINGS] => [IBLOCK_ID] => 13 [ID] => 152 ) [IBLOCK_ID] => 13 [ID] => 152 ) ) --------------------value-------------------- Array ( [VALUE] => 437 ) v convertTODB ------------------property-------------------- Array ( [ID] => 152 [TIMESTAMP_X] => 2010-10-31 00:10:28 [IBLOCK_ID] => 13 [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [CODE] => priviazka [DEFAULT_VALUE] => [PROPERTY_TYPE] => G [ROW_COUNT] => 1 [COL_COUNT] => 30 [LIST_TYPE] => L [MULTIPLE] => N [XML_ID] => [FILE_TYPE] => [MULTIPLE_CNT] => 15 [TMP_ID] => [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [SEARCHABLE] => N [FILTRABLE] => N [IS_REQUIRED] => N [VERSION] => 1 [USER_TYPE] => rope [USER_TYPE_SETTINGS] => Array ( [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [DEFAULT_VALUE] => [CODE] => priviazka [ROW_COUNT] => 1 [COL_COUNT] => 30 [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [FILTRABLE] => N [SEARCHABLE] => N [MULTIPLE] => N [MULTIPLE_CNT] => 15 [IS_REQUIRED] => N [FILE_TYPE] => [LIST_TYPE] => L [USER_TYPE] => rope [PROPERTY_TYPE] => G [USER_TYPE_SETTINGS] => Array ( [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [DEFAULT_VALUE] => [CODE] => priviazka [ROW_COUNT] => 1 [COL_COUNT] => 30 [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [FILTRABLE] => N [SEARCHABLE] => N [MULTIPLE] => Y [MULTIPLE_CNT] => 15 [IS_REQUIRED] => N [FILE_TYPE] => [LIST_TYPE] => L [USER_TYPE] => rope [PROPERTY_TYPE] => G [USER_TYPE_SETTINGS] => [IBLOCK_ID] => 13 [ID] => 152 ) [IBLOCK_ID] => 13 [ID] => 152 ) ) --------------------value-------------------- Array ( [VALUE] => 437 ) |
|
|
|
31.10.2010 00:14:15
В данной ситуации для множественного типа вам остается использовать обычный <select> или поле с окном выбора (как для связи с элементами).
Ну, либо использовать кастомную форму редактирования элемента инфоблока, и в ней уже реализовать все то, чего вам (и мне) не хватает для полного счастья. |
|
|
|
31.10.2010 00:21:38
так у меня вроде обычный селект просто с multiple - выбором.
прикрепляю скриншот. там суть что в верхнем поле как бы файловый мендеежр но только для разделов выбранного инфоблока. выбираем сверху что-нибудь нажимаем "ок" и элемент падает вниз. т.е. 2 селекта. один сверху другой снизу. все завязано именно на нижний селект, верхний просто для выбора. вот там у меня на скриншоте выбрано несколько значений, если я нажму сохранить то произойдет то о чем я писал выше. |
|
|
|
31.10.2010 00:27:27
|
|||
|
|
31.10.2010 00:28:06
хм. так стандартое то свойство работает! и там такой же селект как у меня. ничем не отличается. и все сохраняется..
я вот понять и не могу как стандартный "селект прикрепления к разделам" сохраняет если выбрано несколько значений. |
|
|
|
31.10.2010 00:29:51
Да, вы еще можете создать функцию _ShowGroupPropertyField_custom(), которая будет вызываться вместо штатной _ShowGroupPropertyField() в форме редактирования элемента.
Но этот вариант тоже слишком грубый. |
|
|
|
31.10.2010 00:32:25
так это будет просто вывод свойств.
они же должны сначала сохраниться куда-то. до вывода я еще не дошел Я так понимаю что если стандартное свойство работает и сохраянет несколько значний, значит это можно сделать. |
|
|
|
31.10.2010 00:32:34
|
|||
|
|
31.10.2010 00:34:33
|
|||
|
|
31.10.2010 00:35:03
блин . в документации об этом не слова.
я могу конечно изначаьно на JS сделать, чтобы он эти значений по ОК вытскивал превращал в строку, разделенную запятыми, и отправлял ее, а потом уже в convertDB все это выковыривать и запихиввать. Но вы сказали что поле должно быть типа целочисленного. о_О но как это может быть если несколько значений? может подойдет массив целочисленных значений? где вообще об этом можно почитать? |
|
|
|
31.10.2010 00:50:37
Массив вы можете передавать только в том случае, если у вас значение и есть массив. В штатной поставке с таким способом есть только одно свойство - html/text. Там в качестве значения передается само значение и тип этого значени (html или text). Но на практике это не очень хорошее решение, поскольку фильтрацию по этому типу нужно выполнять через ж... Поэтому сейчас у вас только два варианта: либо выводите поля обычным селектом (без multiple), либо с формой поиска. Ну и Максима Смирнова нужно попросить доделать интерфейсы юзертайпов до ума. Хотя, я уже теряю на это надежду, видимо я в каком-то черном списке, судя по нулевому фидбеку на мои просьбы и вопросы к разработчикам. |
|||
|
|
31.10.2010 00:59:11
но как же так если стандратное то свойство работает!!! я этого все равно не понимаю.
он как-то сохраянет все эти параметры. нужно просто найти где он это делает и сделать также. то как он выводит это вопрос второй. ( |
|
|
|
31.10.2010 01:03:00
Вот функция вывода полей св-в в форме редактирования:
$property_fields["USER_TYPE"] у вас не пустой, поэтому обработка уйдет на _ShowUserPropertyField(). А как выводит _ShowUserPropertyField() уже посмотрите сами в /bitrix/modules/iblock/admin/iblock_element_edit.php Думаю, вам многое станет ясно |
|||||||
|
|
31.10.2010 01:13:20
хм. понятно т.е. способ сохранения заложен в самом первоначальном выводе полей?
а вы еще говорили что внутренние функции битрикса заточены под тип G. м. какие это функции например?(точнее где их можно посмотерть, в каком файле, если вы знаете) я хочу посмотреть как они вытягивают данные.. |
|
|
|
31.10.2010 01:20:46
|
|||
|
|
31.10.2010 01:23:03
и кстати. если вернуться к первоначальному замыслу. и поставить ТИП для элемента "список L".
он то позволит хранить несколько значений? |
|
|
|
31.10.2010 01:30:13
|
|||
|
|
31.10.2010 01:34:52
етить... что за бред..
значит из вариантов можно сделать следующее: сделать чтобы выводилось простым селектом, и просто замножить их через галочку "множественное"? ПС. про форму поиска не понял. в чем суть выводиить с ней? |
|
|
|
31.10.2010 01:39:29
А что по поводу типа множественности св-ва, то делаться это и так должно только через галочку, конечно, если это не какое-то суперспецифичное св-во. |
|||
|
|
31.10.2010 01:41:16
сейчас поставил галку "множ".
и нажал сохранить( именно в форме редактирования свойства инфоблока) и вывел дамп массивов в функции converttoDB. вот что вывелось: v preparesettings Array ( [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [DEFAULT_VALUE] => [CODE] => priviazka [ROW_COUNT] => 1 [COL_COUNT] => 30 [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [FILTRABLE] => N [SEARCHABLE] => N [MULTIPLE] => Y [MULTIPLE_CNT] => 15 [IS_REQUIRED] => N [FILE_TYPE] => [LIST_TYPE] => L [USER_TYPE] => rope [PROPERTY_TYPE] => G [USER_TYPE_SETTINGS] => Array ( [NAME] => �������� [ACTIVE] => Y [SORT] => 500 [DEFAULT_VALUE] => [CODE] => priviazka [ROW_COUNT] => 1 [COL_COUNT] => 30 [LINK_IBLOCK_ID] => 8 [WITH_DESCRIPTION] => [FILTRABLE] => N [SEARCHABLE] => N [MULTIPLE] => N [MULTIPLE_CNT] => 15 [IS_REQUIRED] => N [FILE_TYPE] => [LIST_TYPE] => L [USER_TYPE] => rope [PROPERTY_TYPE] => G [USER_TYPE_SETTINGS] => [IBLOCK_ID] => 13 [ID] => 152 ) [IBLOCK_ID] => 13 [ID] => 152 ) Как видно - multiple сверху прописано Y,а в USER_TYPE_SETTINGS multiple = N. о_О |
||||
|
|
|||