Using Wizard
Wizard is used in a Controller; it uses a single action that all steps use to render and submit forms, greatly simplifying routing - there is only one route for a Wizard.
The above example does the following:
Declares the steps WIZARD_STEPS. There can be as many steps as needed and this array also defines branch options when Plot Branching Navigation (PBN) is used (more on PBN later).
Declares an action (the
wizard()
method in this example). Like any other action, it's route must be defined in the router.The action sets the Wizard options, declares the events and their handlers, then calls
Wizard::step()
with the request.Declares the AfterWizard and Step event handlers.
Required Settings
- Events
public function withEvents(array $events)
Defines the event handlers for Wizard.
The array keys are the FQCN of the event, and the value is a callable to the event handler; see the example below.
[ AfterWizard::class => [$this, 'afterWizardEventHandler'], BeforeWizard::class => [$this, 'beforeWizardEventHandler'], Step::class => [$this, 'stepEventHandler'], StepExpired::class => [$this, 'stepExpiredEventHandler'], ]The AfterWizard and Step event handlers must be given,
the StepExpired handler must be given if a step timeout has been specified,
the BeforeWizard handler is optional.- Steps
public function withSteps(array $steps)
The steps array.
At its simplest, the steps array is a list of steps for Wizard to process. Wizard supports Plot Branching Navigation, enabling Wizard to process different steps in the steps array depending on user input; in this case the steps array becomes a bit more complex.
Wizard Options
- Auto Advance
public function withAutoAdvance(bool $autoAdvance)
Determines what the next step will be if the user has returned to an earlier step
true (default): The first unprocessed step.
false: The next step in the steps array.
- Default Branch
public function withDefaultBranch(bool $defaultBranch)
Determines whether Wizard will process the default - first - branch in a branch group or a branch group is skipped unless a branch is specifically enabled.
true (default): The default - first - branch in a branch group is processed.
false: A branch group is skipped unless a branch is specifically enabled.
- Forward Only
public function withForwardOnly(bool $forwardOnly)
Whether the user csn return to earlier steps.
true : Disallow returning to earlier steps. Repeating the current step is allowed.
false (default): Allow returning to earlier steps.
- Session Key
public function withSessionKey(string $sessionKey)
Sets the session key for the Wizard instance; defailt "__wizard".
The session key only needs to be changed if the default key is used by something else.
- Step Parameter
public function withStepParameter(string $stepParameter)
Sets the step parameter as defined in the Route; default "" (empty string)
Using the default, URLs will be of the form "https::example.com/wizard".
If the parameter is set, URLs include the step name: "https::example.com/wizard/step_1", "https::example.com/wizard/step_2", "https::example.com/wizard/step_3", etc.
- Step Timeout
public function withStepTimeout(int $stepTimeout)
Sets a step timeout in seconds; default 0 (no timeout). If a step is not processed within the timeout period a StepExpired event is raised.
This option must be set before setting the event handlers.