trexology5/taxonomy5

创建和管理不同词汇表中的术语的层级分类

5.0.0 2022-06-03 07:42 UTC

This package is not auto-updated.

Last update: 2024-09-21 18:59:55 UTC


README

Build Status Latest Stable Version Total Downloads License

#分类法

此包允许您在Laravel 4和5中创建包含术语的词汇表

安装

Laravel 5

在您的 composer.json 文件中添加

"require": {
	"trexology/taxonomy": "3.*"
}

从终端运行

composer update

然后通过打开 app/config/app.php 文件来注册服务提供者和外观

(如果您使用的是laravel 5.5,请跳过此步骤)

'Trexology\Taxonomy\TaxonomyServiceProvider',

'Taxonomy'        => 'Trexology\Taxonomy\Facades\TaxonomyFacade',

然后运行以下 artisan 命令以发布配置和迁移

php artisan vendor:publish

然后运行迁移

php artisan migrate

最后,在任何您想要使用分类功能模型的模型中,添加以下特质

<?php

class Car extends \Eloquent {
  use \Trexology\Taxonomy\TaxonomyTrait;
}

Laravel 4

在您的 composer.json 文件中添加

"require": {
	"trexology/taxonomy": "2.0.*"
}

从终端运行

composer update

然后通过打开 app/config/app.php 文件来注册服务提供者和外观

'Trexology\Taxonomy\TaxonomyServiceProvider',

'Taxonomy' => 'Trexology\Taxonomy\Facades\TaxonomyFacade',

如果您想更改它们,可以发布配置文件

php artisan config:publish trexology/taxonomy

执行数据库迁移以安装所需的表

php artisan migrate --package=trexology/taxonomy

最后,在任何您想要使用分类功能模型的模型中,添加以下特质

<?php

class Car extends \Eloquent {
  use \Trexology\Taxonomy\TaxonomyTrait;
}

用法

创建一个词汇表

Taxonomy::createVocabulary('Cars');

检索一个词汇表

$vocabulary = Taxonomy::getVocabulary(1);             // Using ID
$vocabulary = Taxonomy::getVocabularyByName('Cars');  // Using Name

删除一个词汇表

Taxonomy::deleteVocabulary(1);             // Using ID
Taxonomy::deleteVocabularyByName('Cars');  // Using Name

向词汇表中添加一个术语

Taxonomy::createTerm($vocabulary->id, 'Audi');

您还可以可选地指定每个术语的父术语和权重,这样您可以将它们分组并保持排序

$german_cars = Taxonomy::createTerm($vocabulary->id, 'German Cars');
$italian_cars = Taxonomy::createTerm($vocabulary->id, 'Italian Cars');

$term_audi = Taxonomy::CreateTerm($vocabulary->id, 'Audi', $german_cars->id, 0);
$term_bmw  = Taxonomy::CreateTerm($vocabulary->id, 'BMW', $german_cars->id, 1);
$term_benz = Taxonomy::CreateTerm($vocabulary->id, 'Mercedes-Benz', $german_cars->id, 2);
$term_ferrari = Taxonomy::CreateTerm($vocabulary->id, 'Ferrari', $italian_cars->id, 0);

如果术语包含额外的参数,可以以这种方式添加

$params = [
	'shortname' => "GC",
	'type' => "Premium Cars",
];
$german_cars = Taxonomy::CreateTerm($vocabulary->id, 'BMW', $german_cars->id, 0, $params)

使用汽车型号,我可以创建一个新的实例并为它分配一个术语以使其属于

$car = Car::create([
  'model' => 'A3',
]);

$car->addTerm($term_bmw->id);
$car->addTerm($term_benz->id);
$car->removeAllTerms();              // Remove all terms linked to this car

$car->addTerm($term_ferrari->id);
$car->removeTerm($term_ferrari-id);  // Remove a specific term

$car->addTerm($term_audi->id);

// Get all the terms from the vocabulary 'Cars' That
// are attached to this Car.
$terms = $car->getTermsByVocabularyName('Cars');

为了检索与给定术语匹配的所有汽车

$audis = Car::getAllByTermId($term_audi->id)->get();

将这些行添加到您的路由文件中,以访问管理术语/词汇的UI

Route::resource('taxonomy', '\Trexology\Taxonomy\Controllers\TaxonomyController');
Route::post('postOrderTerms', '\Trexology\Taxonomy\Controllers\TaxonomyController@postOrderTerms');
Route::resource('terms', '\Trexology\Taxonomy\Controllers\TermsController');

通过在 taxonomy.config.php 文件中更改配置来扩展与您当前管理主题一致的UI