Я установил и настроил SilverStripe на моем сервере. Я установил MultiForm модуль и следовал инструкциям в документации модуля.
После следования инструкциям я все еще не вижу новый тип страницы в моем портале 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;
}
}
Как мне заставить эти пользовательские мультиформаты работать и появляться как создаваемые страницы?
Конечно, вы не видите новых типов страниц в списке доступных страниц, вы увидите только подклассы SiteTree
там, MultiFormStep
«просто» подкласс DataObject
,
Вы можете подключить форму к каждой странице, которую вы хотите вручную, но вы также можете создать новый тип страницы для вашей формы и включить форму в свой контроллер и шаблон, см. ознакомительная информация о 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 %>
и вы должны увидеть форму сейчас.
Других решений пока нет …