Forms Silverstripe谁将表单提交到Formextension
我使用silverstripe 4.0.3 我做了一个表格的扩展。我通过yml将扩展添加到PageController。这是我的扩展类:Forms Silverstripe谁将表单提交到Formextension,forms,silverstripe,Forms,Silverstripe,我使用silverstripe 4.0.3 我做了一个表格的扩展。我通过yml将扩展添加到PageController。这是我的扩展类: class NewsLetterFormExtension extends DataExtension { private static $allowed_actions = [ 'NewsletterForm' ]; public function NewsletterForm() { $form = Form::create(
class NewsLetterFormExtension extends DataExtension
{
private static $allowed_actions = [
'NewsletterForm'
];
public function NewsletterForm()
{
$form = Form::create(
null,
__Function__,
FieldList::create(
LiteralField::create('Newsletter','<h2>NewsLetter</h2>')
->addExtraClass(''),
LiteralField::create('NLContent','<p>Erfaharen sie regelmäßig was uns beschäftigt</p>')
->addExtraClass(''),
TextField::create('FirstName')
->setAttribute('palceholder', 'Vorname')
->addExtraClass(''),
TextField::create('Surname')
->setAttribute('palceholder', 'Nachname')
->addExtraClass(''),
EmailField::create('Email')
->setAttribute('palceholder', 'E-mail Adresse')
->addExtraClass('')
),
FieldList::create(
FormAction::create('handleNewsletter', 'Senden')
->addExtraClass('btn btn-primary btn-sm')
),
RequiredFields::create('FirstName','Surname', 'Email')
);
return $form;
}
public function handleNewsletter($data, $form)
{
$Newsletter = Newsletter::create();
$form->saveInto($Newsletter);
try {
$Newsletter->write();
} catch (\Exception $e) {
return $e->getMessage();
}
$form->sessionMessage('Danke für die Newsletter Anmeldung', 'good');
return $this->redirectBack();
}
}
类扩展扩展扩展数据扩展
{
私有静态$allowed_操作=[
“通讯表格”
];
公共职能通讯表格(
{
$form=form::create(
无效的
__功能,
字段列表::创建(
LiteralField::创建('Newsletter','Newsletter')
->addExtraClass(“”),
LiteralField::create('NLContent','Erfaharen sie regelmäßig是uns beschäftigt'))
->addExtraClass(“”),
TextField::create('FirstName')
->setAttribute('palceholder','Vorname')
->addExtraClass(“”),
TextField::create('姓氏')
->setAttribute('palceholder','Nachname')
->addExtraClass(“”),
EmailField::创建('电子邮件')
->setAttribute('palceholder','E-mail address')
->addExtraClass(“”)
),
字段列表::创建(
FormAction::create('handleNewsletter','Senden')
->addExtraClass('btn btn主btn sm')
),
RequiredFields::create('FirstName'、'姓氏'、'Email')
);
返回$表格;
}
公共函数handleNewsletter($data,$form)
{
$Newsletter=新闻稿::创建();
$form->saveInto($Newsletter);
试一试{
$Newsletter->write();
}捕获(\异常$e){
返回$e->getMessage();
}
$form->sessionMessage('Danke für die Newsletter Anmeldung','good');
返回$this->redirectBack();
}
}
作为控制器,我传递null。将其提交到扩展中的正确控制器是什么?或者甚至有可能这样做
我试着通过PageController并在那里处理提交。但是我不能让它工作
实际上,我想自己提交一个,这样我就可以将它添加到多表页面类型中 您可以尝试扩展表单类。这没有经过测试,但应该可以工作:) newsletteform.php
class NewsletterForm extends Form {
function __construct($controller, $name) {
$form_name = $name;
$fields = FieldList::create(
LiteralField::create('Newsletter','<h2>NewsLetter</h2>')
->addExtraClass(''),
LiteralField::create('NLContent','<p>Erfaharen sie regelmäßig was uns beschäftigt</p>')
->addExtraClass(''),
TextField::create('FirstName')
->setAttribute('palceholder', 'Vorname')
->addExtraClass(''),
TextField::create('Surname')
->setAttribute('palceholder', 'Nachname')
->addExtraClass(''),
EmailField::create('Email')
->setAttribute('palceholder', 'E-mail Adresse')
->addExtraClass('')
);
$actions = FieldList::create(
FormAction::create('handleNewsletter', 'Senden')
->addExtraClass('btn btn-primary btn-sm')
);
$validator = RequiredFields::create('FirstName','Surname', 'Email')
parent::__construct($controller, $form_name, $fields, $actions, $validator);
}
handleNewsletter($data, $form) {
$Newsletter = Newsletter::create();
$form->saveInto($Newsletter);
try {
$Newsletter->write();
} catch (\Exception $e) {
return $e->getMessage();
}
$form->sessionMessage('Danke für die Newsletter Anmeldung', 'good');
return $this->redirectBack();
}
}
class NewsLetterFormExtension extends DataExtension {
private static $allowed_actions = [
'NewsletterForm'
];
public function NewsletterForm() {
$f = new NewsletterForm($this, 'NewsletterForm');
return $f;
}
}