Results 1 to 9 of 9

Thread: Поменять тип стандартного поля

  1. #1
    Akayoko is offline Member
    Join Date
    Sep 2010
    Posts
    19

    Default Поменять тип стандартного поля

    Добрый день. Требуется поменять тип стандартного поля Тема (name) модуля обращения (Cases). Необходимо задать ему тип multiselect. Скажите пожалуйста, возможно ли это, и, если возможно, как это осуществить?

  2. #2
    erop is offline Sugar Community Member
    Join Date
    Jan 2005
    Location
    Moscow, Russia
    Posts
    107

    Default Re: Поменять тип стандартного поля

    Теоретически поменять можно. Про кастомизацию 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' + 'что-то однозначно идентифицирующее и вводимое руками'. В результате я получаю достаточно компактную уникальную человеко-читаемую запись, отображение которой в других модулях однозначно понимается пользователем.

  3. #3
    Akayoko is offline Member
    Join Date
    Sep 2010
    Posts
    19

    Default Re: Поменять тип стандартного поля

    Спасибо! Поменял тип через vardefs.php
    PHP Code:
    $dictionary['Case']['fields']['name']['type'] = 'enum';
    $dictionary['Case']['fields']['name']['options'] = 'name_list'
    Появилась еще одна проблемка: в заголовке и в списке выдает название, а не видимое значение комбобокса.

  4. #4
    erop is offline Sugar Community Member
    Join Date
    Jan 2005
    Location
    Moscow, Russia
    Posts
    107

    Default Re: Поменять тип стандартного поля

    Quote Originally Posted by akayoko View Post
    Появилась еще одна проблемка: в заголовке и в списке выдает название, а не видимое значение комбобокса.
    Не могли бы разместить здесь скриншот?

  5. #5
    Akayoko is offline Member
    Join Date
    Sep 2010
    Posts
    19

    Default Re: Поменять тип стандартного поля


    Зеленая стрелка указывает на Вид консультации (Это переименованное поле name модуля Cases (Тип droplist)) тут все нормально, значения из комбобокса берутся нужные
    Крастная стрелка показывает на заголовок. Это то же поле name, только значения из комбобокса берутся почему то системные.

  6. #6
    erop is offline Sugar Community Member
    Join Date
    Jan 2005
    Location
    Moscow, Russia
    Posts
    107

    Default Re: Поменять тип стандартного поля

    Quote Originally Posted by Akayoko View Post
    [IMG]Это то же поле name, только значения из комбобокса берутся почему то системные.
    Смотрите, когда у Вас 'name' - просто текстовое поле (как по умолчанию и есть в SugarCRM), то в базу непосредственно сохраняется текстовое значение, которое Вы ввели в это поле. А когда у Вас поле типа 'enum', то в базу сохраняется не само значение, выбранное из dropbox'а или multiselect'а, а индекс (key) одного из элементов массива $app_list_strings['name_list'] : Вы мышкой выбираете value, а в базу пишется key.

    По умолчанию шаблон DetailView, естественно, "заточен" на отображение непосредственного значения из базы. Поэтому он честно берет индекс, записанный в базе и выводит его. Никакой ошибки нет. Так и должно быть!

    Другой вопрос, как это изменить. Не уверен, но думаю, что нужно смотреть в сторону создания кастомного view.detail.php для модуля Cases и генерировать собственный 'name', предоставляя ему значение типа с помощью решения, описанного здесь http://goo.gl/yswCw

  7. #7
    Akayoko is offline Member
    Join Date
    Sep 2010
    Posts
    19

    Default Re: Поменять тип стандартного поля

    Quote Originally Posted by erop View Post
    Другой вопрос, как это изменить. Не уверен, но думаю, что нужно смотреть в сторону создания кастомного 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.

  8. #8
    Akayoko is offline Member
    Join Date
    Sep 2010
    Posts
    19

    Default Re: Поменять тип стандартного поля

    Кстати, еще небольшой вопрос. Возможно ли сделать так, чтобы заголовок в detailview брался не из поля name, а из какого нибудь другого?

  9. #9
    Akayoko is offline Member
    Join Date
    Sep 2010
    Posts
    19

    Default Re: Поменять тип стандартного поля

    Народ, ну подскажите.... очень надо....

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 9
    Last Post: 2010-08-10, 09:09 AM
  2. Replies: 1
    Last Post: 2010-06-05, 12:03 PM
  3. Replies: 0
    Last Post: 2010-04-10, 11:01 PM
  4. Replies: 1
    Last Post: 2009-06-29, 07:56 PM
  5. Replies: 2
    Last Post: 2006-03-25, 10:30 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •