Добрый день. Требуется поменять тип стандартного поля Тема (name) модуля обращения (Cases). Необходимо задать ему тип multiselect. Скажите пожалуйста, возможно ли это, и, если возможно, как это осуществить?
Добрый день. Требуется поменять тип стандартного поля Тема (name) модуля обращения (Cases). Необходимо задать ему тип multiselect. Скажите пожалуйста, возможно ли это, и, если возможно, как это осуществить?
Теоретически поменять можно. Про кастомизацию vardefs можно почитать здесь http://goo.gl/DuCLL . Но поле 'name' как правило (не сталкивался с использованием этого поля из модуля Cases, поэтому не скажу однозначно утвердительно) используется для отображения связанных записей в DetailView и ListView и субпанелях других модулей. Например, Вам в будущем придется отображать Cases в одной из субпанелей в модуле Contacts. И в результате Вам придется выводить весь набор mulitselect'овых значений. Если значений будет много, думаю, что субпанель попросту "расползется". Хотя может быть Вам именно так и надо. Или Вы захотите связать отношением 'one-to-many' модуль Cases с каким-то другим модулем и в DetailView этого "другого" модуля выводить линк на связанную запись из Cases. Опять же будет, как минимум, громоздкая запись. Если к тому же количество выбираемых multiselect значений не ограничивать.
Если Вы преследуете задачу создания некоего human-readable идентификатора для той или иной записи, то лично я в таком случае пошел по пути генерации 'name' из других полей с помощью before_save logic hook. Например, в модуле Opportunities 'name' формируется как 'Project' + 'Account' + 'что-то однозначно идентифицирующее и вводимое руками'. В результате я получаю достаточно компактную уникальную человеко-читаемую запись, отображение которой в других модулях однозначно понимается пользователем.
Спасибо! Поменял тип через vardefs.php
Появилась еще одна проблемка: в заголовке и в списке выдает название, а не видимое значение комбобокса.PHP Code:$dictionary['Case']['fields']['name']['type'] = 'enum';
$dictionary['Case']['fields']['name']['options'] = 'name_list';
Зеленая стрелка указывает на Вид консультации (Это переименованное поле name модуля Cases (Тип droplist)) тут все нормально, значения из комбобокса берутся нужные
Крастная стрелка показывает на заголовок. Это то же поле name, только значения из комбобокса берутся почему то системные.
Смотрите, когда у Вас 'name' - просто текстовое поле (как по умолчанию и есть в SugarCRM), то в базу непосредственно сохраняется текстовое значение, которое Вы ввели в это поле. А когда у Вас поле типа 'enum', то в базу сохраняется не само значение, выбранное из dropbox'а или multiselect'а, а индекс (key) одного из элементов массива $app_list_strings['name_list'] : Вы мышкой выбираете value, а в базу пишется key.
По умолчанию шаблон DetailView, естественно, "заточен" на отображение непосредственного значения из базы. Поэтому он честно берет индекс, записанный в базе и выводит его. Никакой ошибки нет. Так и должно быть!
Другой вопрос, как это изменить. Не уверен, но думаю, что нужно смотреть в сторону создания кастомного view.detail.php для модуля Cases и генерировать собственный 'name', предоставляя ему значение типа с помощью решения, описанного здесь http://goo.gl/yswCw
Нашел похожую проблему, только вот не понял, каким образом они ее решили. http://www.sugarcrm.com/forums/showt...ht=change+type
P.S. Познания в пхп у меня на уровне плинтуса![]()
Last edited by Akayoko; 2011-07-28 at 07:43 AM.
Кстати, еще небольшой вопрос. Возможно ли сделать так, чтобы заголовок в detailview брался не из поля name, а из какого нибудь другого?
Народ, ну подскажите.... очень надо....
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks