labcoding / feedback
ZF2 反馈模块
1.0.0
2017-02-01 19:41 UTC
Requires
- php: >=5.5
- t4web/crud: ~1.0.0
- t4web/domain-module: ~1.2.0
- t4web/infrastructure: ~1.2.0
- zendframework/zend-db: ~2.5.0
- zendframework/zend-eventmanager: ~2.5.0
- zendframework/zend-mvc: ~2.5.0
- zendframework/zend-servicemanager: ~2.5.0
Suggests
- t4web/admin: for showing in admin
This package is not auto-updated.
Last update: 2024-09-28 21:44:26 UTC
README
安装
将此项目添加到您的composer.json文件中
"require": { "labcoding/feedback": "~0.0.1" }
现在通过运行以下命令让composer下载包
$ php composer.phar update
或者
在控制台运行命令
$ php composer.phar require "labcoding/feedback"
安装后
在您的application.config.php
文件中启用它。
<?php return array( 'modules' => array( // ... 'LabCoding\Feedback', ), // ... );
然后您需要创建数据库表`feedback`。
CREATE TABLE IF NOT EXISTS `feedback` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) DEFAULT null, `email` VARCHAR(100) DEFAULT null, `message` TEXT, `answer` TEXT EFAULT NULL, `created_dt` DATETIME NOT NULL, `updated_dt` DATETIME NOT NULL, `status` TINYINT(1) DEFAULT 1, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
或者运行控制台命令
$ php public/index.php feedback init
最后,将javascript文件复制到您的public文件夹中:feedback.jfeedbacker.js(它们必须位于js/module/feedback
中,并在您想显示反馈的地方包含partial
)
事件
Feedback
事件在用户发送反馈或回答用户后触发。
$eventManager = new EventManager(); $eventManager->getSharedManager()->attach( 'Feedback', FeedbackEvent::EVENT_NEW_FEEDBACK, function(FeedbackEvent $e) { // Feedback entity $entity = $e->getEntity(); // ... }, $priority );
FeedbackEvent::EVENT_NEW_FEEDBACK
-new.feedback
- 在用户提交反馈并数据保存到数据库后触发。FeedbackEvent::EVENT_SEND_ANSWER
-send.answer
- 在管理员点击"发送"按钮并更新数据库数据后触发。
向反馈中添加新字段(表单、表、实体)
1 - 在您的项目中创建Feedback模块
2 - 添加到配置中的新实体映射结构
'entity_map' => [ 'Feedback' => [ 'entityClass' => \Feedback\Domain\Feedback::class, 'table' => 'feedback', 'primaryKey' => 'id', 'columnsAsAttributesMap' => [ 'id' => 'id', 'name' => 'name', 'phone' => 'phone', // it is new field 'email' => 'email', 'message' => 'message', 'answer' => 'answer', 'created_dt' => 'createdDt', 'updated_dt' => 'updatedDt', 'status' => 'status', ], 'criteriaMap' => [ 'id' => 'id_equalTo', ] ], ]
3 - 创建新的Feedback实体文件,从\LabCoding\Feedback\Domain\Feedback
继承,并添加新属性
<?php class Feedback extends \LabCoding\Feedback\Domain\Feedback { protected $phone; /** * @return mixed */ public function getPhone() { return $this->phone; } }
4 - 创建新的输入过滤器,并将其添加到服务管理器
'service_manager' => array( 'invokables' => array( 'LabCoding\Feedback\InputFilter\SendInputFilter' => SendInputFilter::class, ) )
5 - 最后,在反馈表单中添加新字段