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

NAME

Mojolicious::Plugin::DomIdHelper - Mojolicious plugin to generate DOM IDs from your ORM objects

SYNOPSIS

  # Mojolicious
  $self->plugin('dom_id_helper');

  # Or, your defaults
  $self->plugin('dom_id_helper', delimiter => '-')

  # Mojolicious::Lite   
  plugin 'dom_id_helper';

  # Set defaults 
  plugin 'dom_id_helper', delimiter => '-'

  # Your view
  <div id="<%= dom_id($object) %>">
    ...
  </div>

  <div id="<%= dom_id($object, method => 'name') ) %>">
    ...
  </div>

DESCRIPTION

DOM IDs are generated by joining an object's package name and its primary key with the character specified by the "delimiter" option. It's assumed that the primary key can be retrieved via a method named id. This can be modified, see "OPTIONS".

For example, given an instance of DB::Package::User with an ID of 1:

  dom_id($user)

will generate:

  user_1 

If the primary key is undefined only the package name is returned.

Multi-column primary keys are not separated by the "delimiter" option, they are concatenated.

ORMs

The aim is to be ORM agnostic. Just set the "method" option to the name of the method used to retrieve your object's primary key.

Multi-column primary keys returned as array references will cause problems (for now).

OPTIONS

delimiter

  plugin 'dom_id_helper', delimiter => '-'

The character used to delimit the object's package name from its primary key. Defaults to '_'.

method

  plugin 'dom_id_helper', method => 'name'
  plugin 'dom_id_helper', method => [qw{first_name last_name}]

The method used to retrieve the object's primary key. Defaults to 'id'.

keep_namespace

  plugin 'dom_id_helper', keep_namespace => 1

Keep the full package name when generating the DOM ID. Defaults to 0 (false).

AUTHOR

Skye Shaw <sshaw AT lucas.cis.temple.edu>