Серебристо-полосатый мультиформ не работает


Я установил и настроил 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;
    }
}

Как заставить эти пользовательские мультиформы работать и отображаться в виде создаваемых страниц?

Author: 3dgoo, 2015-04-20

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 %>

И вы должны увидеть форму сейчас.

 2
Author: wmk, 2015-04-21 04:08:19