Серебристо-полосатый мультиформ не работает
Я установил и настроил SilverStripe на своем сервере. Я установил Многоформный модуль и следовал инструкциям в документации по модулю.
После выполнения инструкций я все еще не вижу нового типа страницы на своем портале CMS.
Я тоже пытался db/build?flush=1
& dev/build?flush=1
но это не имеет значения.
Я создал следующие файлы в mysite/code/
каталог
SponsorSignupForms.php
class SponsorSignupForms extends MultiForm{
protected static $start_step = 'CompanyDetailsStep';
}
CompanyDetailsStep.php
class CompanyDetailsStep extends MultiFormStep{
public static $next_steps = 'ContactDetailsStep';
function getFields()
{
$fields = singleton('Member')->getFrontendFields();
return $fields;
}
function getValidator()
{
return new Member_Validator('FirstName', 'Surname', 'Email', 'Password');
}
}
ContactDetailsStep.php
class ContactDetailsStep extends MultiFormStep{
public static $is_final_step = true;
function getFields()
{
$fields = singleton('Reference')->getFrontendFields();
return $fields;
}
}
Как заставить эти пользовательские мультиформы работать и отображаться в виде создаваемых страниц?
1 answers
Конечно, вы не видите никакого нового типа страницы в списке доступных страниц, вы увидите там только подклассы SiteTree
, MultiFormStep
- это "просто" подкласс DataObject
.
Вы можете подключить свою форму к любой нужной странице вручную, но вы также можете создать новый тип страницы для своей формы и включить форму в свой контроллер и шаблон, см. readme из MultiForm:
class MyFormPage extends Page
{
}
class MyFormPageController extends Page_Controller
{
//
private static $allowed_actions = array(
'SponsorSignupForms',
'finished'
);
public function SponsorSignupForms() {
return new SponsorSignupForms($this, 'Form');
}
public function finished() {
return array(
'Title' => 'Thank you for your submission',
'Content' => '<p>You have successfully submitted the form!</p>'
);
}
}
В шаблон просто включите форму:
<% if $SponsorSignupForms %>
$SponsorSignupForms
<% end_if %>
И вы должны увидеть форму сейчас.