phalkaline / cakephp-feedback-plugin
轻松地为现有的 CakePHP 应用程序添加评论和星级评分。
Requires
This package is auto-updated.
Last update: 2024-09-04 04:15:56 UTC
README
关于
Feedback 是一个CakePHP 插件,可轻松为任何内容添加评论和星级评分。它旨在简单易用,既易于部署,也易于集成到现有应用程序中。它不需要对您的应用程序进行大量修改,也不需要修改任何现有的模型。
已知问题
- 评论没有垃圾邮件过滤器(目前尚无),除了一个简单的蜜罐
安装
重要:此插件的最小要求为 CakePHP 2.2+
。
所需条件
- CakePHP 2.2+
- jQuery
- CakePHP Goodies 插件(由 Graham Weldon a.k.a. predominant 提供)
该插件还使用(包含在插件中)
这些说明假设您使用 git 作为源代码控制,如果您不是,请手动将插件卸载到您的 Plugin 文件夹中,而不是将它们作为 git 子模块初始化。
假设您已安装了正确的 CakePHP 版本,并且您还安装了 jQuery,下一步是安装 Goodies 插件作为子模块
git submodule add git://github.com/predominant/goodies.git Plugin/Goodies
git submodule init
git submodule update
现在为 Feedback 插件执行相同的操作。如果您使用 Git,您可以在应用程序文件夹中运行此操作
git submodule add git://github.com/pHAlkaline/cakephp-feedback-plugin.git Plugin/Feedback
git submodule init
git submodule update
或者访问http://github.com/pHAlkaline/cakephp-feedback-plugin 并手动将插件下载到您的 app/Plugin/Feedback/
文件夹。
此外,不要忘记在您的应用程序配置中激活这两个插件(请参阅 CakePHP 食谱中的安装插件)。
接下来,您需要创建插件所需的数据库表
cake schema create --plugin Feedback
这将创建数据库中的 ratings
和 comments
表。没有进行其他更改。
使用方法
显然,您可以使用评论和评分或仅使用其中之一,因此说明分开(尽管它们非常相似)。
评论
假设您有一个名为 Post 的模型,并希望为您的帖子添加评论。第一步是使您的模型 Commentable
class Post extends AppModel
{
public $actsAs = array('Feedback.Commentable');
}
该行为简单地添加一个 hasMany 关联(Post hasMany Comment
),这样您就可以在视图中获取评论。
下一步是在您的控制器中包含 Comments 组件。该组件为 CommentsHelper 准备了一些数据。如果缺失,则自动包含 CommentsHelper,但如果您更喜欢手动添加,也可以手动添加。
class PostsController extends AppController
{
public $components = array('Feedback.Comments' => array('on' => array('admin_view', 'view'))),
}
该组件接受 'on' 参数,其中包含评论显示时的动作。在底层,这意味着除非需要,否则不会加载 CommentsHelper,组件也不会读取评论者 cookie 信息。
最后,在视图中显示评论
<?php echo $this->Comments->display_for($post); ?>
display_for()
方法接受两个参数。第一个参数包含父行(在这种情况下为 Post
行)和该行的所有评论(如果有)。第二个参数接受以下选项
- 模型:插件尝试检测要使用哪个模型,但如果由于某些原因失败,您可以尝试通过提供一个模型名称来覆盖它。
- 显示表单:在评论后自动显示评论表单,设置为
false
以禁用。
如果您将显示表单设置为false,可以使用辅助器的form()
方法手动显示表单。
评分
评分的使用与评论几乎相同,所以如果您跳过了它并且某些功能不起作用,也请阅读该部分。
评分行为
class Post extends AppModel
{
public $actsAs = array('Feedback.Rated');
}
评分组件
class PostsController extends AppController
{
public $components = array('Feedback.Ratings' => array('on' => array('admin_view', 'view'))),
}
辅助器
<?php echo $this->Ratings->display_for($post); ?>
选项的差异在于display_for()
的第二个参数可以覆盖两个选项
- 模型:如果模型检测失败,您可以在此处覆盖它,但如果模型是插件的一部分,则必须包含插件名称,即
Blog.Post
。 - 模型类:不带插件路径的模型名称,即
Post
。
通常,这些内容会自动检测。
最后,但同样重要的是,评分需要在您的布局(或者如果您愿意,在您的视图中)中添加一段代码,用于输出评分的实际提交脚本
<?php echo $this->fetch('script_execute'); ?>
这通常放在关闭</body>
标签之前。
贡献
如果您想贡献,请克隆GitHub上的源代码,进行更改并给我发送一个pull请求。如果可能的话,始终为您的修改包含单元测试。如果您正在报告一个错误,一个失败的单元测试可能比通常情况下更快地解决该问题。如果您不知道如何修复问题或者太懒惰去修复它,创建一个工单,我们将看看接下来会发生什么。
我总是欢迎新的想法和建议。
重要:如果您发送补丁,请遵循编码风格!如果不这样做,我很大概率不会接受它。例如
// bad
function drink() {
return false;
}
// good
function drink()
{
return true;
}
许可
多许可下