Med*_*tnz 4 php validation conditional silverstripe
我有一个表单有多个动作,例如创建订单和创建报价.
根据点击的操作,我需要应用不同的验证.例如,报价不需要订单参考.
在Silverstripe中这可能吗?如果没有,我将如何得到它?
public function Order($request=null) {
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('Name', 'Your Full Name'),
TextField::create('OrderRef', 'Purchase Order #')
),
FieldList::create(
LiteralField::create('Cancel', '<a class="cancel button alert">Don\'t save</a>'),
FormAction::create('saveQuote', 'Save Quote'),
FormAction::create('saveOrder', 'Save Order')->addExtraClass('success')
),
RequiredFields::create('Name', 'OrderRef')
);
return $form;
}
Run Code Online (Sandbox Code Playgroud)
为此,您可能需要创建自定义RequiredFields子类以有条件地设置所需的字段:
class CustomValidator extends RequiredFields {
public function php($data) {
if($this->form->buttonClicked()->actionName() == 'saveQuote') {
$this->addRequiredField('FieldName'); // ...
} else {
$this->addRequiredField('OtherFieldName'); // ...
}
return parent::php($data);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在表单中使用它,如:
$form = new Form(
$this, 'FormName', $fields, $actions, new CustomValidator()
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |