mirror of
https://github.com/silverstripe/silverstripe-multiform
synced 2024-10-22 11:05:49 +02:00
Updating broken links and other misc bits of documentation
This commit is contained in:
parent
ad85234158
commit
2da8f28bbb
50
README.md
50
README.md
@ -18,7 +18,7 @@ individual implementation can be customized to the project requirements.
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
SilverStripe 2.4 or higher is required.
|
SilverStripe 3.1+.
|
||||||
|
|
||||||
## What it does do
|
## What it does do
|
||||||
|
|
||||||
@ -70,17 +70,15 @@ before.
|
|||||||
If you are not familiar with SilverStripe, it is highly recommended you run
|
If you are not familiar with SilverStripe, it is highly recommended you run
|
||||||
through the tutorials before attempting to start with this one.
|
through the tutorials before attempting to start with this one.
|
||||||
|
|
||||||
* [View a listing of all available tutorials](/tutorials)
|
* [View a listing of all available tutorials](http://doc.silverstripe.org/tutorials)
|
||||||
|
|
||||||
### 1. Installing
|
### 1. Installing
|
||||||
|
|
||||||
[Download a version of multiform](multiform#downloading). Install it as a
|
Using [Composer](https://getcomposer.org/), you can install multiform into your
|
||||||
sibling of the top level directories (framework and cms) in your installation.
|
SilverStripe site using this command (while in the directory where your site is
|
||||||
|
currently located)
|
||||||
|
|
||||||
If you use composer to manage your SilverStripe installation add the following
|
composer require "silverstripe/multiform:*"
|
||||||
line to your composer.json file
|
|
||||||
|
|
||||||
"silverstripe/multiform": "dev-master"
|
|
||||||
|
|
||||||
### 2. Create subclass of MultiForm
|
### 2. Create subclass of MultiForm
|
||||||
|
|
||||||
@ -93,8 +91,8 @@ site called "Bob's Chicken Shack" then a good name would be *BCSMultiForm*.
|
|||||||
This makes sense, as it is specific to the project that you're developing a
|
This makes sense, as it is specific to the project that you're developing a
|
||||||
multi-form for.
|
multi-form for.
|
||||||
|
|
||||||
Keep in mind the PHP file you create must be in the mysite/code directory, and
|
Keep in mind the PHP file you create must be in the `mysite/code` directory, and
|
||||||
the filename must be the same as the class name, with the .php extension.
|
the filename must be the same as the class name, with the `.php` extension.
|
||||||
|
|
||||||
For the above example, our multi-form will be called *BCSMultiForm.php*
|
For the above example, our multi-form will be called *BCSMultiForm.php*
|
||||||
|
|
||||||
@ -168,7 +166,7 @@ the `$start_step` variable *BCSMultiForm*, but we call it `$next_steps`.
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
At the very least, each step also has to have a ''getFields()'' method returning
|
At the very least, each step also has to have a `getFields()` method returning
|
||||||
a *FieldSet* with some form field objects. These are the fields that the form
|
a *FieldSet* with some form field objects. These are the fields that the form
|
||||||
will render for the given step.
|
will render for the given step.
|
||||||
|
|
||||||
@ -202,7 +200,7 @@ However, we've forgotten one thing. We need to create a method on a page-type so
|
|||||||
that the form can be rendered into a given template.
|
that the form can be rendered into a given template.
|
||||||
|
|
||||||
So, if we want to render our multi-form as `$BCSMultiForm` in the *Page.ss*
|
So, if we want to render our multi-form as `$BCSMultiForm` in the *Page.ss*
|
||||||
template, we need to create a BCSMultiForm method (function) on Page_Controller:
|
template, we need to create a BCSMultiForm method (function) on the controller:
|
||||||
|
|
||||||
:::php
|
:::php
|
||||||
<?php
|
<?php
|
||||||
@ -233,7 +231,7 @@ template, we need to create a BCSMultiForm method (function) on Page_Controller:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
The BCSMultiForm() function will create a new instance our subclass of
|
The `BCSMultiForm()` function will create a new instance our subclass of
|
||||||
MultiForm, which in this example, is *BCSMultiForm*. This in turn will then set
|
MultiForm, which in this example, is *BCSMultiForm*. This in turn will then set
|
||||||
up all the form fields, actions, and validation available to each step, as well
|
up all the form fields, actions, and validation available to each step, as well
|
||||||
as the session.
|
as the session.
|
||||||
@ -260,7 +258,7 @@ Your template should look something like this, to render the form in:
|
|||||||
|
|
||||||
|
|
||||||
In this case, the above template example is a *sub-template* inside the *Layout*
|
In this case, the above template example is a *sub-template* inside the *Layout*
|
||||||
directory for the templates. Note that we have also included ''$Form'', so
|
directory for the templates. Note that we have also included `$Form`, so
|
||||||
standard forms are still able to be used alongside our multi-step form.
|
standard forms are still able to be used alongside our multi-step form.
|
||||||
|
|
||||||
### 6. Adding a step indicator
|
### 6. Adding a step indicator
|
||||||
@ -340,7 +338,7 @@ Now that we've got a structure set up to collect form data along each step, and
|
|||||||
progress through successfully, we need to customise what happens at the end of
|
progress through successfully, we need to customise what happens at the end of
|
||||||
the last step.
|
the last step.
|
||||||
|
|
||||||
On the final step, the ''finish()'' method is called to finalise all the data
|
On the final step, the `finish()` method is called to finalise all the data
|
||||||
from the steps we completed. This method can be found on *MultiForm*. However,
|
from the steps we completed. This method can be found on *MultiForm*. However,
|
||||||
we cannot automatically save each step, because we don't know where to save it.
|
we cannot automatically save each step, because we don't know where to save it.
|
||||||
So, we must write some code on our subclass of *MultiForm*, overloading
|
So, we must write some code on our subclass of *MultiForm*, overloading
|
||||||
@ -402,7 +400,7 @@ Here is an example of what we could do here:
|
|||||||
|
|
||||||
#### Organization
|
#### Organization
|
||||||
|
|
||||||
The class Organisation() is mentioned in the above example but doesn't exist at
|
The class Organisation is mentioned in the above example but doesn't exist at
|
||||||
the moment (unlike the existing Member() class which looks after the member
|
the moment (unlike the existing Member() class which looks after the member
|
||||||
groups in SilverStripe) so we need to create it:
|
groups in SilverStripe) so we need to create it:
|
||||||
|
|
||||||
@ -468,7 +466,7 @@ If you'd like a pre-existing template on how to customise the form step, have a
|
|||||||
look at Form.ss that's found within the sapphire module. Use that template, as
|
look at Form.ss that's found within the sapphire module. Use that template, as
|
||||||
a base for your new MembershipForm.ss template in your project templates.
|
a base for your new MembershipForm.ss template in your project templates.
|
||||||
|
|
||||||
For more information on this, please [look at the Form documentation](/form#using_a_custom_template) under "Using a custom template".
|
For more information on this, please [look at the Form documentation](http://doc.silverstripe.org/framework/en/topics/forms#custom-form-templates) under "Using a custom template".
|
||||||
|
|
||||||
### getNextStep()
|
### getNextStep()
|
||||||
|
|
||||||
@ -499,7 +497,7 @@ step should be. An example:
|
|||||||
|
|
||||||
To define validation on a step-by-step basis, please define getValidator() and
|
To define validation on a step-by-step basis, please define getValidator() and
|
||||||
return a Validator object, such as RequiredFields - for more information on form
|
return a Validator object, such as RequiredFields - for more information on form
|
||||||
validation see [:form](/form).
|
validation see [:form](http://doc.silverstripe.org/form-validation).
|
||||||
|
|
||||||
e.g.
|
e.g.
|
||||||
|
|
||||||
@ -589,12 +587,11 @@ You can run the task from the URL, by using http://mysite.com/MultiFormPurgeTask
|
|||||||
MultiFormPurgeTask is a subclass of *DailyTask*, so can be used alongside the
|
MultiFormPurgeTask is a subclass of *DailyTask*, so can be used alongside the
|
||||||
cli-script.php automated tasks which are included with SilverStripe.
|
cli-script.php automated tasks which are included with SilverStripe.
|
||||||
|
|
||||||
One way of automatically running this on a UNIX based machine is by cron. For
|
One way of automatically running this on a UNIX based machine is by cron.
|
||||||
more information, see [:scheduledtask](/scheduledtask) for more information.
|
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
* Code example on how to use ''$form->saveInto()'' with MultiForm, as it doesn't have all steps in the $form context at ''finish()''
|
* Code example on how to use `$form->saveInto()` with MultiForm, as it doesn't have all steps in the $form context at `finish()`
|
||||||
|
|
||||||
* Allowing a user to click a link, and have an email sent to them with the current state, so they can come back and use the form exactly where they left off
|
* Allowing a user to click a link, and have an email sent to them with the current state, so they can come back and use the form exactly where they left off
|
||||||
|
|
||||||
@ -602,18 +599,17 @@ more information, see [:scheduledtask](/scheduledtask) for more information.
|
|||||||
|
|
||||||
* Different presentation of the URL to identify each step.
|
* Different presentation of the URL to identify each step.
|
||||||
|
|
||||||
* Allow customisation of ''prev()'' and ''next()'' on each step. Currently you can only customise for the entire MultiForm subclass. There is a way to customise on a per step basis, which could be described in a small recipe.
|
* Allow customisation of `prev()` and `next()` on each step. Currently you can only customise for the entire MultiForm subclass. There is a way to customise on a per step basis, which could be described in a small recipe.
|
||||||
|
|
||||||
* More detailed explanation, and recipe example on how to make branched multistep forms. For example, clicking a different action takes you to an alternative next step than the one defined in ''$next_steps''
|
* More detailed explanation, and recipe example on how to make branched multistep forms. For example, clicking a different action takes you to an alternative next step than the one defined in `$next_steps`
|
||||||
|
|
||||||
|
|
||||||
## Related
|
## Related
|
||||||
|
|
||||||
* [Form](/form)
|
* [Form](/form)
|
||||||
* [Form field types](/form-field-types)
|
* [Form field types](http://doc.silverstripe.org/form-field-types)
|
||||||
* [Form recipes](recipes/forms)
|
|
||||||
|
|
||||||
* [Tutorials](/tutorials)
|
* [Tutorials](/tutorials)
|
||||||
* [Tutorial 3 - Forms](tutorial/3-forms)
|
* [Tutorial 3 - Forms](http://doc.silverstripe.org/framework/en/tutorials/3-forms)
|
||||||
|
|
||||||
* [Templates](/templates)
|
* [Templates](http://doc.silverstripe.org/framework/en/reference/templates)
|
||||||
|
Loading…
Reference in New Issue
Block a user