<?php
namespace Anax\HTMLForm;
/**
* Anax base class for wrapping sessions.
*
*/
class FormController
{
use \Anax\DI\TInjectionaware,
\Anax\MVC\TRedirectHelpers;
/**
* Index action.
*
*/
public function indexAction()
{
$this->di->session(); // Will load the session service which also starts the session
$form = $this->di->form->create([], [
'name' => [
'type' => 'text',
'label' => 'Name of contact person:',
'required' => true,
'validation' => ['not_empty'],
],
'email' => [
'type' => 'text',
'required' => true,
'validation' => ['not_empty', 'email_adress'],
],
'phone' => [
'type' => 'text',
'required' => true,
'validation' => ['not_empty', 'numeric'],
],
'submit' => [
'type' => 'submit',
'callback' => [$this, 'callbackSubmit'],
],
'submit-fail' => [
'type' => 'submit',
'callback' => [$this, 'callbackSubmitFail'],
],
]);
// Check the status of the form
$form->check([$this, 'callbackSuccess'], [$this, 'callbackFail']);
$this->di->theme->setTitle("Testing CForm with Anax");
$this->di->views->add('default/page', [
'title' => "Try out a form using CForm",
'content' => $form->getHTML()
]);
}
/**
* Callback for submit-button.
*
*/
public function callbackSubmit($form)
{
$form->AddOutput("<p><i>DoSubmit(): Form was submitted. Do stuff (save to database) and return true (success) or false (failed processing form)</i></p>");
$form->AddOutput("<p><b>Name: " . $form->Value('name') . "</b></p>");
$form->AddOutput("<p><b>Email: " . $form->Value('email') . "</b></p>");
$form->AddOutput("<p><b>Phone: " . $form->Value('phone') . "</b></p>");
$form->saveInSession = true;
return true;
}
/**
* Callback for submit-button.
*
*/
public function callbackSubmitFail($form)
{
$form->AddOutput("<p><i>DoSubmitFail(): Form was submitted but I failed to process/save/validate it</i></p>");
return false;
}
/**
* Callback What to do if the form was submitted?
*
*/
public function callbackSuccess($form)
{
$form->AddOUtput("<p><i>Form was submitted and the callback method returned true.</i></p>");
$this->redirectTo();
}
/**
* Callback What to do when form could not be processed?
*
*/
public function callbackFail($form)
{
$form->AddOutput("<p><i>Form was submitted and the Check() method returned false.</i></p>");
$this->redirectTo();
}
}