2016-09-08 5 views
0

안녕하세요 여러분, 내 웹 사이트의 간단한 문의 양식을 만들려고합니다. ShaeDawson의 블록 모듈을 사용하고 있습니다.Silverstripe : 문의 양식 방법이 없습니다.

나는 다음과 같은 오류 받고 있어요 :이 문제를 해결

<?php 

class ContactBlock extends Block { 
    private static $db = array(
     'ContainToGrid'  => 'Boolean', 
     'SectionBGColour' => 'Varchar', 
     'GridBGColour'  => 'Varchar', 
     'OverrideEmail'  => 'Varchar' 
    ); 

    private static $singular_name = 'Contact Form'; 
    private static $plural_name = 'Contact Forms'; 

    public function getCMSFields() { 
     $fields = parent::getCMSFields(); 

     $fields->addFieldToTab("Root.Main", HeaderField::create('BlockSettings', 'Block settings')->setHeadingLevel(2), "ManyMany[BlockArea]"); 
     $fields->addFieldToTab("Root.Main", CheckBoxField::create("ContainToGrid", "Contain in grid?")); 

     //Background colours of section 
     $fields->addFieldToTab("Root.Main", TextField::create("SectionBGColour", "Block Background Colour") 
      ->setDescription('(Optional) Leave blank for transparent')); 
     $fields->addFieldToTab("Root.Main", TextField::create("GridBGColour", "Grid Background Colour") 
      ->setDescription('(Optional) Leave blank for transparent') 
      ->displayIf('ContainToGrid')->isChecked()->end()); 

     $fields->addFieldToTab("Root.Main", HeaderField::create('EmailNotifications', 'Email Notification')->setHeadingLevel(2)); 

     $fields->addFieldToTab("Root.Main", TextField::create("OverrideEmail", "OverrideEmail") 
      ->setDescription('(Optional) Entering an email address here will override the email set in site settings')); 

     return $fields; 
    } 

    public function ContactForm(){ 
     return $this->getController()->ContactForm(); 
    } 
} 

class ContactForm_Controller extends Block_Controller { 

    private static $allowed_actions = array(
     'ContactForm' 
    ); 

    public function ContactForm(){ 
     $fields = FieldList::create(array(
      TextField::create('Name'), 
      EmailField::create('Email'), 
      TextField::create('Organisation'), 
      TextAreaField::create('Message') 
     )); 
     $actions = FieldList::create(
      FormAction::create('submit', 'Send Enquiry') 
     ); 
     return Form::create($this, 'ContactForm', $fields, $actions); 
    } 
    public function submit($data, $form){ 
     // process form data as usual 
     // ... 
     // redirect 
     return $this->redirect($this->pageLink() . '?contacted=1'); 
    } 

} 

답변

0

: 여기

"Uncaught Exception: Object->__call(): the method 'contactform' does not exist on 'Block_Controller'"

나의 블록에 대한 코드입니다. 신기한 실수. ....

ContactBlock_Controller

을 :

ContactForm_Controller

에 :

난에서 내 '블록 컨트롤러'확장자의 이름을 변경하는 데 필요한