Silverstripe 3.1: Добавяне на връзка към has_one в CMS

Когато използвате has_many's или many_many's, в 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