bridn/taxonomy

CakePHP 3.x 简单分类插件

v0.3 2014-09-27 22:00 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:54:24 UTC


README

简单分类插件,您可以为实体添加标签或分类等。

需求

  • CakePHP 3.x
  • CakePHP 迁移插件 (Phinx >= v0.3.8)

1 - 首先,使用迁移插件创建表

cd to your app path
src/Console/cake migrations migrate -p Taxonomy

有关迁移的更多信息请参阅: http://github.com/cakephp/migrations

2 - 加载 Taxonomy 插件(app/config/bootstrap.php)

Plugin::load('Taxonomy', ['bootstrap' => false, 'routes' => true]);

3 - 为您的 Table 模型添加行为

public function initialize(array $config)
{
    $this->addBehavior('Taxonomy.TaxonomySync');
    $this->addBehavior('Taxonomy.TaxonomyFinder');
}
  • TaxonomySync 行为创建/更新/清理您的术语。
  • TaxonomyFinder 行为管理所有类型的查询。如果您不想超载查询,可以动态地断开它。

分类插件使用多态关联,它会自动与您的模型关联。

4 - 使用 TaxonomyHelper 为内容添加标签。

将助手添加到您的内容控制器。

public $helpers = ['Taxonomy.Taxonomy'];

在查询您的内容后,插件将返回一个对象和一个与您的内容关联的术语数组。第一个参数 'tag' 将用于在数据库中分组您的术语(不要翻译此参数),第二个必须包含您的实体对象,第三个是一个 cakephp 表单参数数组(标签、行等)。例如,对于法语表单

<?= $this->Taxonomy->input('tag', $article, ['label' => __d('Taxonomy', 'Mots clés')]) ?>
<?= $this->Taxonomy->input('category', $article, ['label' => __d('Taxonomy', 'Categorie')]) ?>

5 - 控制器中的查询

返回表格和类型的所有术语(文章控制器)

$articles = $this->{$this->name}->find('all');
$categories = $this->{$this->name}->listAllTermsByType('category');
$this->set(compact('articles', 'categories'));

返回用于特定术语 ID 的表格的所有关系(文章控制器)

$categories = $this->{$this->name}->listAllByTableAndByTerm($id);
$this->set(compact('categories'));

6 - 注意

使用分号";"分隔您的单词