tomfun / brander-eav
此包已被弃用且不再维护。未建议替代包。
帮助创建具有不同属性(字段)的实体。还提供与elastic search friendsofsymfony/elastica-bundle的集成。
v1.2.2
2017-05-12 15:56 UTC
Requires
Requires (Dev)
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
#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