dnaklik / dna-exchange-bundle
快乐的dna交换
Requires
- php: ^8.1
- doctrine/annotations: ^1.0
- doctrine/doctrine-bundle: ^2.1
- doctrine/doctrine-migrations-bundle: ^3.0
- doctrine/orm: ^2.7
- symfony/asset: ^6.4
- symfony/asset-mapper: ^6.4
- symfony/config: ^6.4
- symfony/console: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/dotenv: ^6.4
- symfony/http-kernel: ^6.4
- symfony/security-bundle: 6.4.*
- symfony/twig-bundle: ^6.4
- symfony/webpack-encore-bundle: ^2.1
- symfony/yaml: ^6.4
- twig/twig: ^2.0
Requires (Dev)
- symfony/browser-kit: ^6.4
- symfony/framework-bundle: ^6.4
- symfony/maker-bundle: ^1.50
- symfony/phpunit-bridge: ^6.4
This package is auto-updated.
Last update: 2024-09-04 23:54:58 UTC
README
DnaExchangeBundle 是一种提供 dna 标记给内容和用户的方法。有了这个 dna,该组件可以提供相关内容或相关用户。
使用以下命令安装包
composer require dnaklik/dna-exchange-bundle
然后...就完成了!如果你不使用 Symfony Flex,你还需要在 AppKernel.php 文件中启用 DnaKlik\DnaExchangeBundle\DnaKlikDnaExchangeBundle。
使用方法
要为内容和使用者提供 dna 标记,请将以下代码添加到你的控制器中。如果没有用户登录,DNA 标记将存储在会话中。
// src/Controller/SomeController.php use DnaKlik\DnaExchangeBundle\Service\DnaKlikExchange; use Symfony\Component\HttpFoundation\Request; // ... class SomeController { public function __construct(Request $request, DnaKlikExchange $dnaKlikExchange, DnaExchangeContentRepository $dnaExchangeContentRepository) { $this->dnaKlikExchange = $dnaKlikExchange; $this->dnaExchangeContentRepository = $dnaExchangeContentRepository; } public function detail() { $stamp = $this->dnaKlikExchange->getStamp($request); // ... } } ## To find related content: public function relatedContent(Request $request): response { $items = $this->dnaKlikExchange->getRelatedContent($request, 30); foreach($items as $values) { $values["slug"]; $content = $this->doctrine ->getRepository(Content::class) ->findOneBy(array("urlName" => $slugParts[2])); $values["matchCorr"]; foreach($values["stamps"] as $stamp => $stampCount) { if (isset($values["matchStamps"][$stamp])) { $dna .= "<span class='match'>".$stamp." (".$stampCount.")</span> "; } else { $dna .= $stamp." (".$stampCount.") "; } } $values["totalStampCount"]); } } ## An array with slugs is returned. You can use the slugs to retrieve the related content from your own application
您也可以直接使用 id dnaklik_dna_exchange.dnaklik_exchange 来访问此服务。
配置
一些可选参数可以通过创建一个新的 config/packages/dnaklik_dna_exchange.yaml 文件来直接配置。默认值如下
# config/packages/dnaklik_dna_exchange.yaml # crossover value crossOver: 8 # max number off stamps per item maxStamps: 64 stamp_provider: App\Service\CustomDnaKlikStampProvider
扩展标记列表
如果你感到特别有创意和兴奋,你可以自定义 dna_exchange 来提供额外的内容!
为此,创建一个实现 DnaKlikStampProvider 的类:使用颜色内容的自定义 stampprovider 示例
namespace App\Service; use DnaKlik\DnaExchangeBundle\Service\DnaKlikStampProvider; class CustomDnaKlikStampProvider extends DnaKlikStampProvider { public function getContent(): array { $result = $this->dnaExchangeContentStampRepository->StampsInContent(); foreach($result as $index => $content) { $slugParts = explode("/", $content["slug"]); $color = $this->manager ->getRepository(Color::class) ->findOneBy(array("urlName" => $slugParts[2])); $result[$index]["property"] = $color->getColor(); } return $result; } function getContentFromId($id) { $result = $this->dnaExchangeContentRepository->findBy(array("id" => $id),array('id'=>'DESC'),3,0); foreach($result as $index => $content) { $slugParts = explode("/", $content->getSlug()); $color = $this->manager ->getRepository(Color::class) ->findOneBy(array("urlName" => $slugParts[2])); } return $color; } public function findMatchItems($dna, $max) { $items = $this->matchDna->findMatchItems($dna, $max); foreach($items as $index => $item) { $slugParts = explode("/", $item["slug"]); $color = $this->manager ->getRepository(Color::class) ->findOneBy(array("urlName" => $slugParts[2])); $items[$index]["property"] = $color->getColor(); } // dump($items); return $items; } }
还有一个管理员来评估 dna 交换的进度:可以通过创建一个新的 config/routes/dnaklik_dna_exchange.yaml 文件来配置此管理员的路由。
_dna_exchange: resource: '@DnaKlikDnaExchangeBundle/Resources/config/routes.xml' prefix: /dna
此管理员的网址是:<your_url>/dna/exchange/admin
贡献
当然,开源是由每个人为公共利益贡献一点时间而推动的。如果你想看到某个功能或添加一些你自己的快乐词汇,太好了!你可以请求它——但是创建一个 pull request 是完成事情更好的方式。
无论如何,请随时提交问题或 pull request:所有贡献和问题都受到热烈欢迎 :)。