-
Yii2. Как прокрутить страницу к первому полю с ошибкой после валидации?
Очень удобная для пользователя фишка — прокрутка страницы к первому полю с ошибкой в случае неуспешной валидации. В этой статье я напишу, как можно просто прокрутить страницу к первой ошибке после валидации yii2. Приведу пример с реального проекта: /** * Прокрутка полсле неудачной валидации */ $(«#form»).on(«afterValidate», function (event, messages) { if(typeof $(«.has-error»).first().offset() !== «undefined») {…
-
jQuery. Autocomplete. Как обновить данные в виджете?
Плагин Autocomplete используется для быстрой подсказки пользователю вариантов ввода из определенного списка. Но в случае зависимости эти вариантов от других полей — обновление данных очень неочевидно. В этой статье — пример решения задачи. Самый простой пример — это зависимость условных моделей авто от марки. Когда пользователь выбрал Марку «Mercedes» — в поле модель ему должны…
-
Как прокрутить div вниз с помощью JavaScript и jQuery?
Задача программной прокрутки вниз может быть актуальна, например, при разработке чата. Блок сообщений всегда должен быть внизу, а последние сообщения всегда должны быть видны. Очень короткое решение — в этой статье. Пример для нативного Javascript: element.scrollTop = element.scrollHeight Пример для jQuery использует scrollTop: var targetDiv = $(«#some-div»); targetDiv.scrollTop( targetDiv.prop(‘scrollHeight’) ); Оба эти примера позволят Вам…
-
Yii2. Как добавить в OR несколько условий с LIKE?
Возможна ситуация, когда нужно делать запрос с LIKE-поиском по нескольким полям, но при этом с условием OR. В этой статье пример реализации на Yii2 данной задачи. Всё, на самом деле, просто. Приведу пример: $query->andFilterWhere([ ‘or’, [‘like’, ‘first_name’, $nameFromQuery], [‘like’, ‘last_name’, $nameFromQuery], [‘like’, ‘middle_name’, $nameFromQuery] ]); Выше привел конструкцию, которая при условной поисковой фразе «Ивано» сгенерирует…
-
Yii2. Queue. Как установить time_limit (max_execution_time)?
Работа с очередями позволяет распараллелить некоторые процессы и\или вынести особо время затратные задачи в очередь. В этой статье я раскажу, как изменить лимит времени на выполнение задачи (max_execution_time). Общие принципы работы с yii2-queue я описывал ранее здесь. Первая мысль, что мне пришла, когда я увидел сообщение об ошибке о завершении таска из-за временного лимита —…
-
Как отследить нажатие Ctrl+Enter с помощью jQuery?
jQuery позволяет очень просто отслеживать комбинации клавиш. В этой статье — пример, как отследить нажатие Ctrl+Enter .на jQuery. На самом деле всё очень просто. Нам нужно использовать событие keydown и event, который генериурет нам jQuery. Например, если нам нужно отследить нажатие Ctrl+Enter на всех textarea: $(‘textarea’).on(‘keydown’, function(e) { if (e.ctrlKey && e.keyCode == 13) {…
-
Php. Как установить первый день месяца в дате при помощи \DateTime?
При формировании отчетной формы, к примеру, необходимо установить дату начала равной первому дню текущего месяца. В этой статье — простой пример реализации задачи. Итак, пример очень простой. Мы можем указать нужную нам дату в конструкторе: $dateTime = new \DateTime(‘first day of this month’); echo $dateTime->format(‘jS, F Y’); Или изменить уже существующий экземпляр: $dateTime = new…
-
Yii2. Как валидировать массив с данными?
В процессе разработки часто в качестве атрибута может выступать массив с данными, которые также нужно валидировать. В Yii2 есть необходимый валидатор, о котором мы часто забываем. В этой статье — пример работы с валидатором each для валидации элементов массива. Собственно все достаточно просто. И отлично описано в документации. Другими словами — при помощи EachValidator мы…
-
Php. Как сгенерировать ZIP-архив?
Сегодня постараемся разобраться с вопросом генерации ZIP-архива средствами php. На авторство решения не претендую — когда столкнулся с задачей — нашел данный работающий пример на stackoverflow . Итак, ниже пример метода, который по массиву входящих файлов генерирует ZIP-архив. Как видно с примера формат входящих данных следующий: $files = [ [‘file_name’ => ‘nameInZip1.pdf’, ‘/path/to/file/1.pdf’], [‘file_name’ =>…
