Silverstripe Form Renderwith不显示表格或任何样式

时间:2012-07-25 05:16:52

标签: php silverstripe

我正在尝试使用以下内容呈现带有模板的表单:

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>

任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:1)

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

$FacebookForm

或者,您可以继承Form类并使用自定义forTemplate()方法。更多信息如下。

请参阅: