PHP Form plugin

This plugin can be used to perform some modifications or validations on form data.

It can be launched in different form stages:

  • onBeforeLoad - before create elements. Element values can be changed;
  • onFormLoad - before form load. Can modify element parameters. Cannot change element values!;
  • onStartSubmitForm - Before Form Submit. The code is executed after the form is validated before the form data is saved to the database. Element values can be changed. This will affect the saved data;
  • afterFormSubmited - After Form Submited;

Php code can be placed in php code area or run from php file.

In code area only you can use placeholders for logged in user data and element placeholders to get element value(s):

  • '{user_id}';
  • '{name}';
  • '{email}';
  • '{user_groups}' - json_encoded array;
  • '{lang_id}';
  • '{db2__users___name}';

Code samples:

// Logged in User Data:
$user_groups = '{user_groups}';
$user_id = '{user_id}';
$user_name = '{name}';
$email = '{email}';
$lang_id = '{lang_id}';

$debug_user = [
    'user_groups' => $user_groups,
    'user_id'   => $user_id,
    'user_name' => $user_name,
    'email'     => $email,
    '$lang_id'  => $lang_id,
];
//p($debug_user);

//Update element data
$this->Form_Model->updateElementData($el_name, 'updated value');

onBeforeLoad

$groups_data = $this->Form_Model->getGroupsData();
$groups = $this->Form_Model->getGroups();

$group_id = 610;
$group_elements = $this->Form_Model->getGroupElements($group_id);

$debug_data = [
    'groups_data'   => $groups_data,
    'groups'            => $groups,
    'group_elements'  => $group_elements,
];
p($debug_data);

onFormLoad

$groups_data = $this->Form_Model->getGroupsData();
$groups = $this->Form_Model->getGroups();

$group_id = 610;
$group_elements = $this->Form_Model->getGroupElements($group_id);

$el_name = 'db2__users___password';
$el_data = $this->Form_Model->getElementData($el_name);
$el_value = $this->Form_Model->getElementValue($el_name);

$debug_data = [
    'groups_data'   => $groups_data,
    'groups'        => $groups,
    'group_elements'   => $group_elements,
    'el_data'       => $el_data,
    'el_value'      => $el_value,
];
p($debug_data);

onStartSubmitForm

$groups_data = $this->Form_Model->getGroupsData();
$groups = $this->Form_Model->getGroups();

$el_name = 'db2__users___password';
$el_value = $this->Form_Model->getElementValue($el_name);

$old_data = $this->Form_Model->getOrigData();

$debug_data = [
    'groups_data'   => $groups_data,
    'groups'        => $groups,
    'el_value'      => $el_value,
    'old_data'      => $old_data,
];
//p($debug_data);exit;

//Update element data
$this->Form_Model->updateElementData($el_name, 'updated value');

afterFormSubmited

$groups_data = $this->Form_Model->getGroupsData();
$groups = $this->Form_Model->getGroups();

$el_name = 'db2__users___password';
$el_value = $this->Form_Model->getElementValue($el_name);

$old_data = $this->Form_Model->getOrigData();

$debug_data = [
    'groups_data'   => $groups_data,
    'groups'        => $groups,
    'el_value'      => $el_value,
    'old_data'      => $old_data,
];
p($debug_data);exit;

Load model and use its methods:

// at the top of the file
use brixy\App\Models\custom\Some_Custom_Model as Some_Custom_Model; 
//instantiate
$Some_Custom_Model = new Some_Custom_Model();

//If you plan to use brixy_data then pass it as model parameter
$Some_Custom_Model = new Some_Custom_Model($this->brixy_data);