Установить minDate поля на основе другого поля - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь установить 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 имеет теперь .При изменении даты start_at значение end_at minDate должно совпадать с start_at date.

Например :.Если 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 Ответ

0 голосов
/ 14 сентября 2018

Установите это на свой контроллер

    public function formExtendFieldsBefore($form) 
    {
       //handle here your conditions
        $form->fields['end_at']['minDate'] = Carbon::parse($start_date)->format('Y-m-d');
    }
...