The view
template takes some objects (usually just one) from objects
and displays the object's properties in a table.
It gets the displayable form of a column's name from the hash returned from the column_names
method:
</%doc>
<tr>
<td class="field"> <% $classmetadata->{colnames}->{$col} %> </td>
<td>
%#=cut
% if ($col eq "url" && $item->url) { # Possibly too much magic. <a href="<%$item->url%>"><%$item->url%></a> % } else { %#=for doc
%#One interesting macro used in this template is maybe_link_view
:
<& macros/maybe_link_view, %ARGS, item=>$item->$col &>
<%doc> This tests whether or not the returned value is an object, and if so, creates a link to a page viewing that object; if not, it just displays the text as normal. The object is linked using its stringified name; by default this calls the name
method, or returns the object's ID if there is no name
method or other stringification method defined.
The view
template also displays a list of other objects related to the first one via has_many
style relationships; this is done by calling the related_accessors
method - see "related_accessors" in Model - to return a list of has-many accessors. Next it calls each of those accessors, and displays the results in a table.
</%doc> <& macros/view_related, %ARGS, object=>$item &>
%#=cut
<& macros/button, %ARGS, item=>$item, action=> "edit" &>
<& macros/button, %ARGS, item=>$item, action=> "delete" &>
%}
<& footer, %ARGS &>