The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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 &>