Кастомизируем angular-strap datepicker
Это не пост, скорее заметка, чтобы не забыть.
Речь идет про http://mgcrea.github.io/angular-strap/##datepickers
читать далее
Ограничения по типам запросов в Yii 2, компонент VerbFilter
В Yii2 встроен удобный фильтр ограничения доступа к экшену по типам запросов к нему, компонент называется VerbFilter, а используется он как ключ verbs в поведении (behaviors) контроллера. Под катом подробнее.
Занимательный Spaceless виджет в Yii2 или вырезаем все пробелы
Довольно интересный виджет из коробки имеется в yii2, название ему Spaceless, а занимается он вырезанием пробелов, дабы полностью исключить возможные баги браузеров с переносом строки. Работает все это довольно просто:
Вариант использования метода afterFind в модели
Многие хранят дату/время в базе данных в формате timestamp, а точнее хранят ее в колонке с типом integer, посему при выводе возникает необходимость преобразования числа секунд в дату/время, делают это обычно примерно так:
echo date('Y-m-d H:i:s',$model->date);
Хранение паролей в Yii2
Здравствуйте! Сегодня хотелось бы поговорить о методах, позволяющих повысить безопасность, в приложениях на Yii2.
Поскольку алгоритмы шифрования паролей алгоритмами md5 or sha1 уже не внушают сильного доверия. В Yii2 был реализован метод реализующий хеширование bcrypt.
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123');
в результате выполнения данного метода переменная $hash_pass будет содержать приблизительно следующее значение из 64 символов
$2y$13$imm.m0q9qN/IrWF4AtmH4ejHyS3d.ElmkayY3vQ69DTApgEY4ne36
Также у generatePasswordHash можно указать вторым параметром сложность шифрования
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123',10);
по умолчанию этот параметр имеет значение 13. В официальной документации рекомендуют выставлять этот параметр повыше, но не стоит увлекаться.
Это довольно ресурсоемкий процесс. Если представить, что ваш компьютер сосчитает хеш со сложностью 14 за 1 секунду, то формула по нахождению времени расчета хеша будет выглядеть так 2^(сложность — 14) секунд.
В отличии от md5, при повторном вызове данного метода, будет сгенерирован абсолютно другой набор символов! Для этого для валидации пароля используется следующий код.
Yii::$app->getSecurity()->validatePassword($pass, $hash_pass);
Метод вернет true в случае успешной проверки и false в случае несоответствия данных.
Валидация переменной с помощью стандартных валидаторов
Иногда нужно проверить переменную на соответствие определенным параметрам, для этой задачи вместо средств, который предоставляет нам php можно воспользоваться стандартным функционалом Yii. Скажем чтобы проверить правильность email’а достаточно использовать ниже следующий код (данный пример присутствует в официальной документации):
Получение результатов запроса через Active Record в массив
В процессе чтения документации по Active Record к Yii2 был обнаружен интересный метод с помощью которого данные можно получить сразу в массив, вместо стандартного объекта. В некоторых случаях это может быть довольно полезно. Собственно сам метод: asArray(), применять его можно вместе с любым методом получения данных из AR, например так:
DynamicModel в Yii2, простой пример
Во второй итерации замечательного фраймворка Yii2 была обнаружена возможность создания динамических моделей, отвечает за это одноименный класс DynamicModel, расширяющий класс Model. Призван он упростить формирование полей ввода для определенных переменных, которые по той или иной причине невозможно занести в стандартную модель, но которые нужно подвергнуть валидации.
Выпадающий список в качестве фильтра в CGridView
Скорее всего данная заметка не несет особой смысловой нагрузки, но столкнувшись с проблемой вставки в качестве фильтра в CGridView выпадающего списка на ее решение потребовалось довольно не мало времени, а оказалось все до безумия просто.
Текстовый редактор с загрузкой изображений
Недавно наткнулся на интересный текстовый редактор Imperavi с возможностью загрузки изображений и ко всему прочему сообщество Yii купило OEM лицензию на него, за что отдельное спасибо!
До этого для вставки текстового редактора я использовал CKEditor и расширение для него the-ckeditor-integration, редактор Imperavi мне показался хорошей альтернативой. В этой статей хотелось бы поделиться своими впечатлениями о редакторе Imperavi. читать далее