NAME

Workflow::Validator::HasRequiredField - Validator to ensure certain data are in the context

VERSION

This documentation describes version 2.09 of this package

SYNOPSIS

# Validator is created automatically when you mark a field as
# 'is_required: yes' in the action, such as:

action:
- name: CreateUser
  field:
  - name: username
    is_required: yes
    source_class: App::Field::ValidUsers
  ...

DESCRIPTION

This is a simple validator to ensure that each of the fields you have marked with the 'is_required' property as 'yes' are indeed present before the associated action is executed.

for instance, given the configuration:

action:
- name: CreateUser
  field:
  - name: username
    is_required: yes
  - name: email
    is_required: yes
  - name: office

An action executed with such a context:

my $wf = FACTORY->get_workflow( $id );
$wf->context( username => 'foo' );
$wf->context( office => 'Ottumwa' );
$wf->execute_action( 'CreateUser' );

Would fail with a message:

The following fields require a value: email

You normally do not need to configure this validator yourself. It gets generated automatically when the Action configration is read in based on the 'is_required: yes' attribute. However, if you do need to create it yourself:

action:
- name: Foo
  validator:
  - name: HasRequiredField
    arg:
    - fieldOne
    - field_two

Note that we do not try to match the value in the context against a set of known values or algorithm, just see if the value is defined -- using the Perl notion for defined rather than true/false, which means '0' and the empty string will both be valid.

METHODS

validate

Validates whether a given set of required fields are defined.

Takes two parameters: a workflow object and an array of names of fields.

The provided fields are matched against the workflow in question and Workflow::Exception's are thrown in case of missing fields.

COPYRIGHT

Copyright (c) 2003-2021 Chris Winters. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Please see the LICENSE

AUTHORS

Please see Workflow