ongr/router-bundle

ONGR 路由的包。

安装次数: 39,628

依赖: 5

建议者: 0

安全: 0

星标: 6

关注者: 17

分支: 13

开放问题: 0

类型:symfony-bundle

v2.0.1 2017-05-04 06:10 UTC

README

Router Bundle 允许定义和匹配 Elasticsearch 文档的 URL。在 URL 匹配阶段,它还会搜索具有指定 URL 的 Elasticsearch 文档。

这可以用于为任何文档生成/匹配友好的 URL。美丽的 URL 有助于 SEO 并提高用户体验。

如果您有任何问题,请随时在 Join the chat at https://gitter.im/ongr-io/support 聊天室提问,或者直接过来打个招呼 ;)。

Build Status Coverage Status Latest Stable Version Scrutinizer Code Quality

文档

该包的在线文档在这里 这里

有关贡献规则,请查看 contribute 主题。

设置包

此包强烈使用 ONGR Elasticsearch Bundle。我们假设您熟悉它,并且它已经满足您的需求。

步骤 1: 安装 Router 包

Router 包使用 Composer 安装。

composer require ongr/router-bundle "~1.0"

在您的 AppKernel 中启用 Router 和 Elasticsearch 包

// app/AppKernel.php

public function registerBundles()
{
    $bundles = [
        // ...
        new ONGR\ElasticsearchBundle\ONGRElasticsearchBundle(),
        new ONGR\RouterBundle\ONGRRouterBundle(),
    ];
}

就这样,1 步 安装。接下来的所有步骤都是如何设置产品文档和 SEO URL 的演示。所以请看下面的示例,看看它是多么简单,然后根据您的需求进行调整。

步骤 2: 添加配置

添加 Router 和 Elasticsearch 包的最小配置。

# app/config/config.yml

ongr_elasticsearch:
    analysis:
        analyzer:
            urlAnalyzer:
                type: custom
                tokenizer: keyword
                filter: [lowercase]
    connections:
        default:
            index_name: acme
    managers:
        default:
            connection: default
            mappings:
                - AppBundle

ongr_router:
    #disable_alias: true    # defaults to false
    #router_priority: 1000  # defaults to -100
    manager: es.manager.default
    seo_routes:
        'AppBundle:Product': AppBundle:Product:document
        # ...

警告:如果使用 SeoAwareTrait,您必须实现 urlAnalyzer 分析器,否则在创建索引时将出现致命错误。

在包的配置中,您需要指定要使用的 es.manager,并在 seo_routes 下指定将作为密钥的文档和作为值处理请求的控制器的操作。

urlAnalyzerongr_elasticsearch 配置中定义了 Elasticsearch 如何分析所有 URL 字段。

如果您使用另一个也具有别名 Symfony 路由器的第三方包,您可以将 disable_alias 设置为 true。这可以防止可能的冲突。

router_priority 参数定义了将 ONGR 动态路由器设置到链式路由器的优先级。默认为 -100,以便在标准 Symfony 路由器之后调用,但此值可以根据您的项目需求进行更改。

有关配置的更多信息,请参阅 Elasticsearch 包映射文档

使用示例

步骤 1: 创建产品文档

让我们创建一个 Product 文档类。我们假设已经安装了 AppBundle。

// src/AppBundle/Document/Product.php

namespace AppBundle\Document;

use ONGR\ElasticsearchBundle\Annotation as ES;
use ONGR\RouterBundle\Document\SeoAwareTrait;
use ONGR\RouterBundle\Document\SeoAwareInterface;

/**
 * @ES\Document()
 */
class Product implements SeoAwareInterface
{
    use SeoAwareTrait; // <- Trait for URL's

    /**
     * @ES\Property(type="keyword")
     */
    public $title;

    // ...
}

为了支持友好 URL,该包提供了一个具有预定义映射的 SeoAwareTrait

步骤 2: 创建产品页面的控制器和操作

// src/AppBundle/Controller/ProductController.php

namespace AppBundle\Controller;

use AppBundle\Document\Product;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class ProductController extends Controller
{
    public function documentAction(Product $document)
    {
        return new Response("Product: " . $document->title);
    }
}

步骤 3: 创建索引并插入演示产品

通过在您的终端运行以下命令创建 Elasticsearch 索引

    app/console ongr:es:index:create
    

有关所有命令的更多信息,请参阅 Elasticsearch 包命令章节

此外,在您的终端中运行以下curl命令以插入用于此演示的产品。

    curl -XPOST 'http://localhost:9200/acme/product?pretty=1' -d '{"title":"Acoustic Guitar", "url":"/music/electric-guitar"}'
    

步骤 4:检查是否成功

只需访问 /music/electric-guitar 页面,您应该会看到您在 步骤 3 中插入的产品标题。

许可证

此捆绑包遵循 MIT 许可证。请参阅捆绑包中的完整许可证,详情请见 LICENSE 文件。