diff options
Diffstat (limited to 'lib/Reaction/UI/ViewPort/DisplayField/RelatedObject.pm')
-rw-r--r-- | lib/Reaction/UI/ViewPort/DisplayField/RelatedObject.pm | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/Reaction/UI/ViewPort/DisplayField/RelatedObject.pm b/lib/Reaction/UI/ViewPort/DisplayField/RelatedObject.pm new file mode 100644 index 0000000..3cd217c --- /dev/null +++ b/lib/Reaction/UI/ViewPort/DisplayField/RelatedObject.pm @@ -0,0 +1,26 @@ +package Reaction::UI::ViewPort::DisplayField::RelatedObject; + +use Reaction::Class; +use Scalar::Util 'blessed'; +use aliased 'Reaction::UI::ViewPort::DisplayField'; + +class RelatedObject is DisplayField, which { + + has '+layout' => (default => 'displayfield/value_string'); + + has value_string => (isa => 'Str', is => 'ro', lazy_build => 1); + + has value_map_method => ( + isa => 'Str', is => 'ro', required => 1, default => sub { 'display_name' }, + ); + + implements build_value_string => as { + my $self = shift; + my $meth = $self->value_map_method; + my $value = $self->value; + return blessed $value ? $value->$meth : $value; + }; + +}; + +1; |