Reputation: 519
I'm trying to set minDate of end_at field same as value of start_at field.
This is how this field are set in 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
I tried doing this way:
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');
}
}
I can't set end_at minDate dynamically when start_at is set/changed.
When i go to create page, start_at field as default date as now, so end_at field should have minDate has now. When start_at date is changed, end_at minDate should change to be the same as start_at date.
Eg:. If start_at has value of 14-09-2018, end_at should have minDate 14-09-2018. If i change start_at value to 12-09-2018, end_at should have minDate 12-09-2018.
Update
By using filterFields in model I'm able to update end_at value . How can I also update minDate to be the same as start_at value?
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');
}
}
Upvotes: 0
Views: 264
Reputation: 4023
Set this to your controller
public function formExtendFieldsBefore($form)
{
//handle here your conditions
$form->fields['end_at']['minDate'] = Carbon::parse($start_date)->format('Y-m-d');
}
Upvotes: 0