dnaklik/dna-exchange-bundle

快乐的dna交换

安装: 7

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

语言:CSS

类型:symfony-bundle

v1.0.1 2024-07-04 23:15 UTC

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:所有贡献和问题都受到热烈欢迎 :)。