我正在尝试将end_at字段的minDate设置为与start_at字段的值相同。
这是在fields.yaml中设置此字段的方式:
start_at:
label: netspin.myevents::lang.modeldata.start_at
mode: datetime
span: left
required: 1
type: datepicker
default: now
format: d-m-Y
end_at:
label: netspin.myevents::lang.modeldata.end_at
mode: datetime
span: left
required: 1
type: datepicker
format: d-m-Y
我试过这样做:
public function filterFields($fields, $context = null){
if (!empty($fields->start_at->value)) {
$start_date = $fields->start_at->value;
$fields->end_at->minDate = Carbon::parse($start_date)->format('Y-m-d');
}
}
设置/更改start_at时,我无法动态设置end_at minDate。
当我去创建页面时,start_at字段作为现在的默认日期,所以end_at字段现在应该有minDate。当start_at日期更改时,end_at minDate应更改为与start_at日期相同。
例如:。如果start_at的值为14-09-2018,则end_at的minDate应为14-09-2018。如果我将start_at值更改为12-09-2018,则end_at应该具有minDate 12-09-2018。
更新
通过在模型中使用filterFields,我可以更新end_at值。我怎样才能将minDate更新为与start_at值相同?
public function filterFields($fields, $context = null)
{
if (empty($this->start_at)){
return;
}
if($this->start_at > $this->end_at) {
$start_date = $this->start_at;
$fields->end_at->value = Carbon::parse($start_date)->format('Y-m-d');
// $fields->end_at->min_date doesn't work
$fields->end_at->min_date = Carbon::parse($start_date)->format('Y-m-d');
}
}
将其设置为您的控制器
public function formExtendFieldsBefore($form)
{
//handle here your conditions
$form->fields['end_at']['minDate'] = Carbon::parse($start_date)->format('Y-m-d');
}