2015-04-20 2 views
3

Я установил и настроил SilverStripe на своем сервере. Я установил MultiForm module и выполнил инструкции в документации модуля.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; 
    } 
} 

Как получить эти пользовательские MultiForms, работающие и появляющиеся как созданные страницы?

+0

Я предполагаю, что вы используете SilverStripe 3.1. Примечание в 3.1 'db/build? Flush = 1' ничего не сделает. 'dev/build? flush = 1' должен создавать любые изменения в базе данных для вас. Когда вы вызываете 'dev/build? Flush = 1', вы видите экран« Builder »? – 3dgoo

+0

@ 3dgoo 'dev/build? Flush = 1' на этом экране я нашел свои страницы' ContactDetailsStep' и 'CompanyDetailsStep' и' SponsorSignupForms', но он не показан в типах страниц, спасибо за редактирование – rak

+0

@ 3dgoo Да, им используя silverstripe 3.1 – rak

ответ

2

Конечно, вы не видите каких-либо новых типов страниц в списке доступных страниц, вы будете видеть только подклассы SiteTree там, MultiFormStep «просто» подкласс DataObject.

Вы можете подключить вашу форму на каждую страницу вы хотите вручную, но вы также можете создать новый тип страницы для вашей формы и включают в себя форму в контроллере и шаблона см readme of 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 %> 

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

+0

Я проверил чтение, и мой член команды настроил/установил его неправильно, чтобы он не показывался, спасибо – rak

Смежные вопросы