tomfun / brander-eav

此包已被弃用且不再维护。未建议替代包。

帮助创建具有不同属性(字段)的实体。还提供与elastic search friendsofsymfony/elastica-bundle的集成。

安装: 617

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 2

开放问题: 1

类型:symfony-bundle

v1.2.2 2017-05-12 15:56 UTC

README

如何工作,是什么

俄语阅读

安装包

composer require tomfun/brander-eav
// app/AppKernel.php
    public function registerBundles()
    // ...
        new \Brander\Bundle\EAVBundle\BranderEAVBundle(),
        new FOS\ElasticaBundle\FOSElasticaBundle(),
        new JMS\AopBundle\JMSAopBundle(),
        new JMS\SerializerBundle\JMSSerializerBundle(), // optional
        new JMS\DiExtraBundle\JMSDiExtraBundle($this),

    // ...
# app/config/parameters.yml
# same add to app/config/parameters.yml.dist
parameters:
# .........
    locale: ru

只需启用 elastica 包 并添加基本配置

#app/config/config.yml
fos_elastica:
    clients:
        default: { host: localhost, port: 9200 }
    indexes:
        app: ~

需求

  • FOSElasticaBundle()
  • JMSAopBundle()
  • JMSDiExtraBundle($this)
  • JS 路由器带有生成功能
  • Twigjs 过滤器(用于前端列表)
    • trans
    • transchoice
  • 与 twigjs 编译兼容的gulp 任务

配置

首先

  • 您必须拥有您想要搜索的实体
  • 查询 PHP 类
  • 搜索结果类

配置示例

brander_eav:
  fixturesDirectory: /home/tomfun/fixtures-data
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  list_class_map:
    - Sdelka\Bundle\AdvertBundle\Entity\Advert #entity with eav values, auto find query and result classes in model dir

这将展开为

brander_eav:
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  list_class_map:
    - 
      entity: Sdelka\Bundle\AdvertBundle\Entity\Advert #orm entity
      query: Sdelka\Bundle\AdvertBundle\Model\AdvertQuery #query class. must exist.
      result: Sdelka\Bundle\AdvertBundle\Model\AdvertQuery #result class. must exist.
      serviceClass: Brander\Bundle\EAVBundle\Service\Elastica\EavList #service class

此外,您必须实现一些接口(例如 SearchableEntityInterface)。在这种情况下,列表服务的名称为:"brander_eav.elastica.list.sdelka_advert.advert"

如果您不需要 自动配置 elastica 包,您可以使用简单的序列化指令(可搜索)并手动配置 elastic search 包

brander_eav:
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  searchable:
    - Sdelka\Bundle\AdvertBundle\Entity\Advert #orm entity

显示自动生成的列表(内部 elastica 索引名称 / 类型名称)

app/console de:cont | grep "brander_eav.elastica.list"

路由

在 app/config/routing.yml 中添加以下行

# app/config/routing.yml
eav:
  resource: "@BranderEAVBundle/Resources/config/routing.yml"
  options:
    i18n: false
    expose: true

默认管理 URL 为 /admin/eav/manage/

安全

如果您想要 授予非管理员部分(例如:经理)的访问权限

brander_eav:
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  manageRole: ROLE_MANAGER

匿名用户manageRole: "anon." 或重写投票服务:brander_eav.security.universal_voter

也可以参考 ElasticaSkeletonBundle

待办事项

  • vendor/werkint/stats-bundle/src/Service/Security/Voter/StatsVoter.php 支持属性
  • backbone.modelbinder -> stickit

wtf: cache.app 投票 Twig\BranderEAVExtension \Brander\Bundle\EAVBundle\DependencyInjection\BranderEAVExtension::getConfiguration