137 Nachrichten unter 42 Themen von 49 Mitgliedern
[SilverStripe Roadmap][Changelog]

Eigene Userdefinedforms erstellen bzw. anpassen?

Seite: 1 993 mal gelesen
  • plautzer
    plautzer Community Member
    1 Beitrag

    Eigene Userdefinedforms erstellen bzw. anpassen?

    Hallo,

    Ich habe ein Formular nach folgender Anleitungen erstellt:

    http://blog.mike-wittje.de/2009/06/11/formularerstellung-mit-silverstripe/
    http://www.ssbits.com/creating-a-simple-contact-form/

    ... und möchte dieses, wie bei dem Modul Userdefinedforms, im backend um die tabs für die email empfänger, den onsubmission text and die Ausgabe der submissions erweitern.

    Die Tabs erscheinen zwar, jedoch funktionieren sie nicht richtig. Die submission und der onsubmission text werden nicht anzeigt und die email empfänger nicht gespeichert. Könnt ihr mir sagen wie ich die Funktionen zu laufen bekomme.

    Ich würde auch gern mit den userdefined forms arbeiten... insofern die Möglichkeit besteht für jeden form ein einges template zu nutzen. Gibt es diese Funktion?

    Meine samplepage sieht folgendermaßen aus:

    class SampleFormPage extends Page
    {

    static $db = array(

    'Mailto' => 'Varchar(100)',
    'SubmitText' => 'Text'

    );

    static $has_many = array(
    "Submissions" => "SubmittedForm",
    "EmailRecipients" => "UserDefinedForm_EmailRecipient"
    );

    function getCMSFields() {

    $fields = parent::getCMSFields();

    // define tabs
    $fields->findOrMakeTab('Root.Content.EmailRecipients', _t('EMAILRECIPIENTS', 'Email Recipients'));
    $fields->findOrMakeTab('Root.Content.OnComplete', _t('ONCOMPLETE', 'On Complete'));
    $fields->findOrMakeTab('Root.Content.Submissions', _t('SUBMISSIONS', 'Submissions'));



    // view the submissions
    $fields->addFieldToTab("Root.Content.Submissions", new CheckboxField('DisableSaveSubmissions',_t('SAVESUBMISSIONS',"Disable Saving Submissions to Server")));
    $fields->addFieldToTab("Root.Content.Submissions", new SubmittedFormReportField( "Reports", _t('RECEIVED', 'Received Submissions'), "", $this ) );

    // who do we email on submission

    $emailRecipients = new ComplexTableField(

    $this,
    'EmailRecipients',
    'EmailRecipient',
    array(

    'EmailAddress' => _t('EMAILADDRESS', 'Email'),

    'EmailSubject' => _t('EMAILSUBJECT', 'Subject'),

    'EmailFrom' => _t('EMAILFROM', 'From')

    ),

    'getCMSFields_forPopup',

    "FormID = '$this->ID'"

    );



    $emailRecipients->setAddTitle(_t('AEMAILRECIPIENT', 'A Email Recipient'));
    $fields->addFieldToTab("Root.Content.EmailRecipients", $emailRecipients);

    // text to show on complete
    $onCompleteFieldSet = new FieldSet(

    new HtmlEditorField( "OnCompleteMessage", _t('ONCOMPLETELABEL', 'Show on completion'),3,"",_t('ONCOMPLETEMESSAGE', $this->OnCompleteMessage), $this )

    );

    $fields->addFieldsToTab("Root.Content.OnComplete", $onCompleteFieldSet);

    return $fields;

    }

    }

    class SampleFormPage_Controller extends Page_Controller
    {

    function SampleForm()
    {

    return new SampleForm($this,'SampleForm');

    }

    }

    Über ein paar Hinweise, ich das umsetzen kann wär ich sehr dankbar.

    grüße,
    Plautzer
  • brokemeister
    brokemeister Community Member
    76 Beiträge

    Re: Eigene Userdefinedforms erstellen bzw. anpassen?

    Hi!

    Könntest du mal deinen Quelltext in den dafür vorgesehen Tag packen. Dann kann man dir sicherlich einfacher helfen...


    Code


    Viele Grüße

    Malte

    EOS Uptrade GmbH - Komplexes einfach machen | Certified Silverstripe Partner | www.eos-uptrade.de

  • Izeroy
    Community Member
    211 Beiträge

    Re: Eigene Userdefinedforms erstellen bzw. anpassen?

    Hallo,
    ich hab jetzt mal den Code durchgearbeitet und alle Besonderheiten, die mir aufgefallen sind behoben/markiert. Ausserdem
    hab ich auch noch einige Fragen dazu geschrieben

    class SampleFormPage extends Page
    {

    static $db = array(

    'Mailto' => 'Varchar(100)',
    'SubmitText' => 'Text' // <<<< Wieso Text und nicht HTMLText?

    );

    static $has_many = array(
    "Submissions" => "SubmittedForm", //<<< Ist in der SubmittedForm.php auch das Gegenstück vorhanden?!
    "EmailRecipients" => "UserDefinedForm_EmailRecipient" // gleiche Frage
    );

    function getCMSFields() {

    $fields = parent::getCMSFields();

    // define tabs
    $fields->findOrMakeTab('Root.Content.EmailRecipients', _t('EMAILRECIPIENTS', 'Email Recipients'));
    $fields->findOrMakeTab('Root.Content.OnComplete', _t('ONCOMPLETE', 'On Complete'));
    $fields->findOrMakeTab('Root.Content.Submissions', _t('SUBMISSIONS', 'Submissions'));



    // view the submissions
    $fields->addFieldToTab("Root.Content.Submissions", new CheckboxField('DisableSaveSubmissions',_t('SAVESUBMISSIONS',"Disable Saving Submissions to Server")));
    $fields->addFieldToTab("Root.Content.Submissions", new SubmittedFormReportField( "Reports", _t('RECEIVED', 'Received Submissions'), "", $this ) );

    // who do we email on submission

    $emailRecipients = new ComplexTableField(

    $this,
    'EmailRecipients',
    'UserDefinedForm_EmailRecipient', // das müsste eigentlich verwendet werden
    array(

    'EmailAddress' => _t('EMAILADDRESS', 'Email'),

    'EmailSubject' => _t('EMAILSUBJECT', 'Subject'),

    'EmailFrom' => _t('EMAILFROM', 'From')

    ),

    'getCMSFields_forPopup',

    "FormID = '$this->ID'" // woher kommt FormID?

    );



    $emailRecipients->setAddTitle(_t('AEMAILRECIPIENT', 'A Email Recipient'));
    $fields->addFieldToTab("Root.Content.EmailRecipients", $emailRecipients);

    // text to show on complete
    $onCompleteFieldSet = new FieldSet(

    new HtmlEditorField( "OnCompleteMessageSubmitText", _t('ONCOMPLETELABEL', 'Show on completion'),3,"",_t('ONCOMPLETEMESSAGE', $this->OnCompleteMessage), $this )

    );

    $fields->addFieldsToTab("Root.Content.OnComplete", $onCompleteFieldSet);

    return $fields;

    }

    }

    class SampleFormPage_Controller extends Page_Controller
    {

    function SampleForm()
    {

    return new SampleForm($this,'SampleForm');

    }

    }



    Greetz
    Ben

    PS: brokemeister, ich glaube der Hinweis + eine helfende Antwort wäre besser gewesen. Einfach nur diesen Hinweis, fand ich persönlich nun nicht besonders freundlich. Aber gut ist deine Sache.

    Weitere Fragen?! Meld dich einfach! MSN: benjamin.buessenschuett@hotmail.de ICQ: 354 848 193 Webseite: www.silverstripe-hilfe.de

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna