На этом уроке переходим на один из официальных сайтов по Yii2 и, пользуясь помощью документации, реализовываем одну из своих идей
Дата отправки отчёта:
13 сентября 2020 г.
Задание выполнено: за
3 час. 44 мин.
Чему научился:
использовать функцию exists(); а также узнал о unique в правилах ActiveRecords
Что было сложным:
Наконец, Сделал этот урок. Прошлый урок сделал 25 мая. Это был самый сложный урок. Заметил, что у нас можно регистрировать людей с одинаковыми логинами. Решил это исправить. Долго искал место, где же это надо сделать. Методом проб и ошибок с трудом нашел, куда же это можно прикрутить. Не уверен, что сделал это там , где нужно. Но для меня было главным, чтобы заработало. А то в процессе поиска пару раз совсем сломал все. А бекапа не делал. Рад, что все-таки удалось починить.
Научился: использовать функцию exists(); а также узнал о unique в правилах ActiveRecords Трудности: Наконец, Сделал этот урок. Прошлый урок сделал 25 мая. Это был самый сложный урок.
Заметил, что у нас можно регистрировать людей с одинаковыми логинами. Решил это исправить. Долго искал место, где же это надо сделать. Методом проб и ошибок с трудом нашел, куда же это можно прикрутить. Не уверен, что сделал это там , где нужно. Но для меня было главным, чтобы заработало. А то в процессе поиска пару раз совсем сломал все. А бекапа не делал. Рад, что все-таки удалось починить.
Научился: В своем отчете https://www.videosharp.info/30514/checking/bulletin=2582 я указал три ошибки на сайте. В этом уроке их исправлял.
Первая проблема: некорректные элементы br в тексте объявления. Для решения первой проблемы я перенес вызов функции nl2br для поля info из модели BulletinsForm в код представления site/viewbulletin. Теперь в базе данных нет текста br, он появляется только в момент показа объявления в представлении.
Вторая проблема: встраивание html, css, javascript в поля формы. Чтобы решить вторую проблему я использовал документацию по yii по адресу https://www.yiiframework.com/doc/guide/2.0/en/structure-views#security . Добавил вызовы функций Html::encode и HtmlPurifier::process вокруг вывода информации из базы данных в представлении. Настроил вызов HtmlPurifier::process для того, чтобы разрешить только теги br, а все остальные теги экранировались. Теперь все html-теги(кроме br для переноса строки в поле info), css-правила и javascript-код экранированы и не влияют на дизайн страницы. Javascript код не запускается.
Третья проблема: при уменьшении ширины окна изображение выходит за границы левой колонки. Третья ошибка не связана напрямую с yii2, здесь дело в верстке. Для ее решения я изменил значение атрибута style на style="max-width: 100%; height: 400px; object-fit: contain;". Теперь изображение занимает не больше, чем 100% ширины родительского элемента и не выходит за границу левой колонки. Высота фиксирована, поэтому миниатюры под изображением не прыгают. И object-fit: contain необходим для сохранения пропорций изображения при его замене после выбора миниатюры.