floor12 / yii2-module-feedback
Feedback with a few types of forms, admin controller and some settings.
Installs: 0
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 0
Type:yii2-module
pkg:composer/floor12/yii2-module-feedback
Requires
- php: >=7.1.0
- floor12/yii2-editmodal: dev-master
- floor12/yii2-fprotector: dev-master
- floor12/yii2-module-files: dev-master
- floor12/yii2-phone: dev-master
- kartik-v/yii2-widget-datepicker: dev-master
- yii2mod/yii2-enum: *
- yiisoft/yii2: ~2.0.13
README
Модуль для работы с обращениями пользователей на сайте. Из коробки содержит обычную встраевуемую и форму для модального окна. Возможна конфигурация различных тематик для обращения с отправкой уведомлений о них на разные адреса. Администрирование сохранными заявками происходит через отдельный CRUD.
Установка
Добавление модуля в проект
Для добавления модуля выполняем команду
$ composer require floor12/yii2-module-feedback
или добавляем в секцию "required" вашего файла composer.json следую строку:
"floor12/yii2-module-feedback": "dev-master"
Выполнение миграций
Для хранения сохраненных обращений спользуется таблица feedback. Выполняем миграции:
$ ./yii migrate --migrationPath=@vendor/floor12/yii2-module-feedback/src/migrations
Для автоматического применения миграций из установленных в проект модулей рекомендую использовать дополнительный компонент, например fishvision/yii2-migrate.
Регистрация модуля в приложении и его конфигурирование
Для дальнейшей работы необходимо прописать модуль в конфиге приложения, в секции modules.
В минимальной конфигурации регистрация модуля выглядит следующим образом:
'modules' => [ 'modules' => [ 'feedback' => [ 'class' => 'floor12\feedback\Module', ], ] ...
При этом floor12\feedback\Module имеет дополнительные параметры для конфигурации:
adminRoles- массив ролей пользователей, которым доступно управление, по умолчанию содержит['@']предоставляя доступ всем авторизованным пользователям;adminLayout- алиас для лейаута админского контроллера, по умолчанию@app/views/layouts/main;frontendLayout- алиас для лейаута фронтенд контроллера (исползуется если отображать форму на отдельной странице), по умолчанию@app/views/layouts/main;viewFormModal- алиас пути к view формы для модального окна, по умолчанию@vendor/floor12/yii2-module-feedback/src/views /frontend/_form_modal_bs;viewFormEmbedded- алиас пути к view формы для встраивания в страницу или показу на отдельной странице, по умолчанию@vendor/floor12/yii2 -module-feedback/src/views/frontend/_form_embedded;viewSuccessModal- алиас пути к view, отдаваемому в модальное окно при успешной отправки обращения, по умолчанию@vendor/floor12/yii2-module-feedback/src/views/frontend/_success_modal_bs;viewSuccessEmbedded- алиас пути к view, отдаваемому клиенту при успешной отправки обращения, по умолчанию@vendor/floor12/yii2 -module-feedback/src/views/frontend/_success_ebedded;viewMailUserTemplate- алиас пути к шаблону письма для благодарности пользователю, по умолчанию@vendor/floor12/yii2-module -feedback/src/views/mail/_user_thanks.php;viewMailAdminTemplate- алиас пути к view, отдаваемому клиенру при успешной отправки обращения, по умолчанию@vendor/floor12/yii2-module-feedback/src/views/mail/_admin_info.php;emailRequired- является лиemailобязательным полем, по умолчаниюfalse;phoneRequired- является лиphoneобязательным полем, по умолчаниюtrue;
Темы запросов и адреса для уведомлений
Для работы модуля, необходимо задать хотя бы одну конфигурацию через параметры Yii2 приложения.
Обычно, это можно сделать в файлах app\config\params.php или common\config\params.php.
В параметры необходимо прописать no-replyEmail,no-replyEmail и массив contactForm.
Пример конфигурации:
[
'params'=>[
'no-replyEmail' => 'no-reply@mcmoscow.ru',
'no-replyName' => 'Мебельный Центр Москва',
'contactForm' => [
[
'title' => 'По общим вопросам',
'emails' => ['main@example.com', 'main@example.com']
],
[
'title' => 'По вопросам аренды',
'emails' => ['main@example.com', 'main@example.com']
]
]
]
];
Использование
Для обработки пользовательских запросов и рендеринга форм используется
floor12\feedback\controllers\FrontendController, который по имеет
action для работы с формой в модальном окне /feedback/admin/form-modal и
в виде обычной страницы /feedback/admin/form.
Например, размещение кнопки на открытие модального окна с формой может выглядить так:
С использованием Bootstrap Modal и, соответственно, Jquery:
<button onclick="showForm('/feedback/admin/form-modal',0)">Напишите нам письмо</button>
Для этого подхода, необходимо зарегистрировать в приложении floor12\editmodal\EditModalAsset.
Для этих же целей можно воспользоваться floor12\feedback\components\OpenContactModalButtonWidget.
Если вы не хотите и не используете Bootstrap и Jquery, то можно воспользоваться моей ванильной имплементацией модального окна. Она прорисует модалное окно и загрузит туда форму, и jquery, необходимый для работы базовых валидаций форм Yii2 загрузится уже туда, только если пользователь открывал форму.
<button onclick="f12editmodal.open('/feedback/admin/form-modal')">Напишите нам письмо</button>
Для этого случая, необходимо зарегистрировать в приложении другой бандл:floor12\editmodal\EditModal2Asset.
Администрирование
После регистрации в приложении административный CRUD по-умолчанию
доступен по адресу /feedback/admin/index, за который
отвечает floor12\feedback\controllers\AdminController.