Silverstripe 3.1: Добавление ссылки на has_one в CMS

При использовании has_many или many_many в Silverstripe легко переходить от одного объекта DataObject к другому. Но теперь я хотел бы такую ​​же функциональность для has_one's: добавить ссылку на выбранный объект данных в CMS. В этом случае формат has_one в CMS будет следующим: Заголовок - Раскрывающийся список со значениями - кликабельная ссылка на выбранный объект.

Есть ли способ сделать это? Я не возражаю против того, чтобы путь крошки сломался, или что вам сначала нужно сохранить, чтобы показать ссылку.


person jberculo    schedule 04.08.2014    source источник


Ответы (1)


Вот пара подходов:

Я предполагаю, что вы используете GridField для списков has_many или many_many? Если вы хотите использовать тот же подход, создайте временный список только с записью has_one и используйте его как источник GridField. Используйте GridFieldConfig_Base или GridFieldConfig_RecordEditor в качестве конфигурации, чтобы вы могли добавлять или удалять новые записи. Добавьте ссылку в массив $ summary_fields вашей записи has_one, чтобы она отображалась в GridField.

Второй (и более простой) подход - добавить LiteralField после того, как поле записи has_one должно выводить ссылку на запись.

Что вы думаете?

person ninty9notout    schedule 04.08.2014
comment
Ваше второе решение звучит просто идеально. Но у меня создалось впечатление, что вы не можете поместить LiteralField за другим полем? - person jberculo; 05.08.2014
comment
Не позади, а сразу после него. Используйте $ fields- ›insertAfter ($ literalField, has_one_title); - person ninty9notout; 05.08.2014
comment
Это будет означать, что он появится на следующей строке, или есть способ это изменить? - person jberculo; 05.08.2014
comment
Я не знаю простого способа, если вы не расширите то поле, которое используете, и создадите новый файл шаблона, который будет использоваться для вывода поля и ссылки рядом с ним. - person ninty9notout; 05.08.2014
comment
Хорошо, в последнее время у меня были проблемы с изменением шаблонов администратора (leftAndMain), и в итоге я просто перезаписал шаблоны в ядре модуля cms. Так что я, вероятно, просто соглашусь добавить его ниже has_one. Спасибо! - person jberculo; 06.08.2014
comment
Я так и думал. Это самый простой подход. - person ninty9notout; 07.08.2014