Установить minDate поля на основе другого поля
Я пытаюсь установить minDate поля end_at так же, как значение поля 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');
}
}
Я не могу установить end_at minDate динамически, когда start_at установлен / изменен.
Когда я иду на создание страницы, поле start_at как дата по умолчанию, как сейчас, поэтому поле end_at должно иметь minDate сейчас. При изменении даты начала и конца end_at minDate должно измениться на дату начала.
Например:. Если 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');
}
}
1 ответ
Установите это на свой контроллер
public function formExtendFieldsBefore($form)
{
//handle here your conditions
$form->fields['end_at']['minDate'] = Carbon::parse($start_date)->format('Y-m-d');
}