银色条纹形状效果图;不要表现出形式或任何风格


Silverstripe Form Renderwith doesn't show form or any styling

我正试图用以下模板呈现一个表单:

function FacebookForm($fbFields) {
        $actions = new FieldSet(
            new FormAction('doFaceBookForm', 'Register')
        );
        $memberfields = singleton('XEUser')->getMemberFormFields();
        $fields = new FieldSet();
        $reqFields = array();
        foreach($fbFields as $key => $value){
            switch($value){
                case 'Gender':
                    $fields->push($memberfields->fieldByName('Gender'));
                    $reqFields[] = 'Gender';
                    break;
                case 'DateOfBirth':
                    $fields->push($memberfields->fieldByName('DateOfBirth'));
                    $reqFields[] = 'DateOfBirth';
                    break;
            }
        }
        $validator = new RequiredFields($reqFields);
        $form = new Form($this, 'FaceBookForm', $fields, $actions,$validator);
        $form->disableSecurityToken();
        return $form->renderWith(array('FacebookController','Page'));
        //return $form;
    }

当我只return $form时,我的表单出现在默认的contentController.ss中,所以我创建了一个新模板并添加了return $form->renderWith(array('FacebookController','Page'));。当我这样做时,我会得到页面中应该有的所有内容,但根本没有应用任何样式,表单甚至不会出现。这是我的FacebookController模板:

<div id="left">
    <h2>Thankyou for signing up with your Facebook account</h2>
    <p>The following details could not be obtained from your Facebook account, please enter them now.</p>
    $form
</div>
<div id="right">
</div>

有人能说明这件事吗?

尝试在模板中使用方法的名称:

$FacebookForm

或者,您可以将Form类划分为子类,并使用自定义的forTemplate()方法。下面是更多信息。

参见:

  • http://doc.silverstripe.org/framework/en/topics/forms
  • http://doc.silverstripe.org/framework/en/tutorials/3-forms