FlexForm can be extended by a PHP function to handle additional tasks after a Form has been submitted.


This can be done with FFAfterFormHandling MediaWiki Hook. For more information see de Docs on Hooks.


Or using the following method:

Start a FlexForm and tell it to use your extension :

<form extension="<name of your extension" >
   Your flexform elements here
</form>

Create a folder in FlexForm/src/Modules/Handlers with the name of your extension.

In this folder create a file called PostHandler.php with the following namespace :

namespace FlexForm\Modules\Handlers\< your extension name = same as folder name >;

Your extension will be based based on a class PostHandler and will utilize the HandlerInterface interface and will only hold one method : execute

class PostHandler implements HandlerInterface {
	/**
	 * @inerhitDoc
	 */
	public function execute( array $flexFormFields, HandleResponse $responseHandler ): HandleResponse {

	}
}

The array $flexFormFields will be available and hold all submitted Form elements as name->value.

If your extension produces an error, throw a FlexFormException and FlexForm will take care of the rest. Make sure to throw a message that with your extension name.

If your extension has successfully finished its tasks, tell the responsehandler it has been successful and return the responseHandler :

$responseHandler->setReturnType( HandleResponse::TYPE_SUCCESS );
return $responseHandler;

If your extension has successfully finished its tasks and you want to pass additional information to the user :

$responseHandler->setReturnType( HandleResponse::TYPE_SUCCESS );
$responseHandler->setReturnData( string < your message > );
return $responseHandler;

NOTE:

When a FlexForm has the extension tag. FlexForm will first search for the extension in the Handlers folder. If it cannot be found it will run the FFAfterFormHandling hook.

No error message will be shown if FlexForm cannot find the extension.