Как сделать ссылки на даты если есть запись Kartik datepicker Yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alsid
Сообщения: 5
Зарегистрирован: 2020.10.06, 10:51

Как сделать ссылки на даты если есть запись Kartik datepicker Yii2

Сообщение alsid »

Помогите!
Как сделать ссылки в календаре на даты если есть запись по этой дате Kartik datepicker, чтобы по клику выводились записи за текущий день.
Понимаю что надо написать функцию ну как ее применить в Kartik datepicker.

Код: Выделить всё

           <?= $form->field($model,'data', [
                'inputOptions' => [
                    'id' => 'dateForm',
                ]
            ])->widget(DatePicker::classname(), [
                'pickerIcon' => '<i class="fas fa-calendar-alt text-primary"></i>',
                'removeIcon' => '<i class="fas fa-trash text-danger"></i>',
                'options' => [
                        'placeholder' => 'Выберите дату',
                        'data' => [
                            'picker' => 'datepicker'
                        ]
                    ],
                'pluginOptions' => [
                    'autoclose'=>true,
                    'todayHighlight' => true,
                    'format' => 'dd.mm.yyyy',
                    'startDate' => '01.01.2016',
                    'endDate' => '0d'
                ]
Заранее спасибо
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Как сделать ссылки на даты если есть запись Kartik datepicker Yii2

Сообщение unknownby »

alsid писал(а): 2020.10.06, 10:59 Помогите!
Как сделать ссылки в календаре на даты если есть запись по этой дате Kartik datepicker, чтобы по клику выводились записи за текущий день.
Понимаю что надо написать функцию ну как ее применить в Kartik datepicker.

Заранее спасибо
Нужно дописать

Код: Выделить всё

'pluginEvents' => [
                        "changeDate" => "function(e) { changeMonth(getStringDateSmall(e.date)); }",
                        "changeMonth" => "function(e) { changeMonth(getStringDateSmall(e.date)); }",
                    ],
Где changeMonth это функция JS, которая обращается по $.ajax к нужному URL и возвращает необходимые данные в нужное место, которое определяется success внутри $.ajax
Наводка есть, действуем ;)
И не забываем, что при первой загрузке (при открытии календарика) данных еще нет и нужно сделать первый вызов метода, чтоб загрузились данные.
alsid
Сообщения: 5
Зарегистрирован: 2020.10.06, 10:51

Re: Как сделать ссылки на даты если есть запись Kartik datepicker Yii2

Сообщение alsid »

Спасибо за наводку. Но я немного профан в JS $.ajax. Буду благодарен за пример реализации или может уже есть готовые решения.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Как сделать ссылки на даты если есть запись Kartik datepicker Yii2

Сообщение unknownby »

alsid писал(а): 2020.11.28, 13:55 Спасибо за наводку. Но я немного профан в JS $.ajax. Буду благодарен за пример реализации или может уже есть готовые решения.
Прежде чем давать конкретное решение, я расскажу как реализовать. Иначе так ничему не научиться :D

1. В главном представлении, которое открывается пишем календарь с ивентами, добавляем JS файлы и функции из этого файла. (для первоначальной загрузки, при первом открытии календаря передавать нужно дату текущую)
2. Создаем JS файл, в котором будет загрузка событий в календарь, загрузка нужных данных (список товаров, которые в аренде или нужно вернуть, например), метод отрисовки дат на календаре.
3. Должны быть действия по загрузке нужных данных и смене даты, которые будут выполняться в JS файле по $.ajax
4. В действие загрузки данных будет renderPartial, а в действие смены даты через

Код: Выделить всё

public function run($date = '')
5. Подготовительные работы почти закончились. Эти два действия должны быть прописаны в контроллере, которое отображает главное представление с календарем.
6. Нужно создать widget, который будет отображать данные (наши товары в виде списка).

Примерно вот так выглядит
так ничего нет
http://prntscr.com/vsmu6c
так на дату 22.11.2020 есть
http://prntscr.com/vsmwin

Можно как на одну дату, так и на диапазон, как настроить выборку
http://prntscr.com/vsmydl

Справа это "загрузка нужных данных", отображение через виджет.
Слева это календарь на главном представлении, "метод отрисовки дат на календаре".
Ответить