Skip to content

Instantly share code, notes, and snippets.

@Da-Fecto
Last active August 29, 2015 14:24
Show Gist options
  • Save Da-Fecto/c7c3f236f83e6690e0af to your computer and use it in GitHub Desktop.
Save Da-Fecto/c7c3f236f83e6690e0af to your computer and use it in GitHub Desktop.
Formbuilder Handler.php
<?php
$config->form = array(
// Name of the formbuilder form
'formName' => $form_name,
// Redirect to here after successful submit.
'successUrl' => $success_url,
// Global error message after faulty submit.
'errorMessage' => $error_message,
);
if ($config->form['formName']) {
/**
* Modify settings
*
* We use $config as a mediator so probably no changes are needed here.
* More settings found here: /site/modules/FormBuilder/FormBuilderProcessor.php
*
* @param HookEvent $event
*/
$forms->addHookBefore('FormBuilderProcessor::render', function(HookEvent $event) {
// (object) FormBuilderProcessor
$processor = $event->object;
// Configuration array
$settings = wire('config')->form;
// Name of the form
if($processor->formName != $settings['formName']) return;
// Shown after failed submit.
$processor->set('errorMessage', $settings['errorMessage']);
// Redirect after succesfull submit.
$processor->set('successUrl', $settings['successUrl']);
// Submit the form somewhere else. (disabling all other options)
$processor->set('saveFlags', FormBuilderProcessor::saveFlagExternal);
});
/**
* Modify the field before render
*
* @param HookEvent $event
*/
$forms->addHookBefore('Inputfield::render', function(HookEvent $event) {
$form = $event->object;
if($form->name != wire('config')->form['formName']) return;
/**
* Example usage
*
* $field = $form->get('password');
* $field->set('type', 'password');
*/
});
/**
* After the input is processed by ProcessWire
*
* @example See examples at the top of this file
* @param HookEvent $event
*/
$forms->addHookAfter('InputfieldForm::processInput', function(HookEvent $event) {
$form = $event->object;
if($form->name != wire('config')->form['formName']) return;
/**
* Example usage
*
* $field = $form->get('username');
* $field->value = 'set a value';
* $field->getErrors(true);
* $field->error("Set an error");
*/
});
$form = $forms->render($config->form['formName']);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment