shakaran / faq-bundle
Symfony 4.x FAQ bundle
Requires
- doctrine/doctrine-bundle: ~1.6
- doctrine/orm: >=2.5
- gedmo/doctrine-extensions: >=2.4.10
- sensio/framework-extra-bundle: >=3.0
- symfony/framework-bundle: >=4.0
Requires (Dev)
- sensio/generator-bundle: ^3.0
- symfony/phpunit-bridge: ^2.7
README
ShakaranFaqBundle 是 GenjFaqBundle 的分支,支持 Symfony 4.3+。
它允许你在网站上显示 FAQ,问题按类别分组。功能
- 问题按类别分组
- 类别可以停用
- 问题可以草稿和计划发布
- 可以一次性显示所有信息,也可以折叠问题/类别,对于大型 FAQ。这基本上取决于你 - 你如何在模板中处理
- 折叠模式生成 SEO 友好的 URL
- 包含非常简单的 mysql 搜索 - 如果你需要更高级的搜索,请使用 elasticsearch
从 GenjFaqBundle 迁移到你的代码
如果你在 GNU/Linux 终端中,执行以下命令以轻松快速地替换代码
grep -rl GenjFaqBundle src | xargs sed -i 's$GenjFaqBundle$ShakaranFaqBundle$g'
grep -rl GenjFaqBundle config | xargs sed -i 's$GenjFaqBundle$ShakaranFaqBundle$g'
grep -rl Genj src | xargs sed -i 's$Genj$Shakaran$g'
grep -rl Genj config | xargs sed -i 's$Genj$Shakaran$g'
要求
查看 composer.json
安装
将此添加到你的 composer.json 中
...
"require": {
...
"gedmo/doctrine-extensions": "~2.3,<3.0",
"shakaran/faq-bundle": "dev-master"
...
然后运行 composer update。完成后,在 AppKernel.php 中启用该包
# app/AppKernel.php
class AppKernel extends Kernel
{
public function registerBundles() {
$bundles = array(
...
new Shakaran\FaqBundle\ShakaranFaqBundle()
...
将路由规则添加到你的 routing.yml 中
# app/config/routing.yml
shakaran_faq:
resource: "@ShakaranFaqBundle/Resources/config/routing.yml"
最后,更新你的数据库模式
php bin/console doctrine:schema:update --dump-sql
使用 --force 选项实际执行 DB 更新。
完成。现在你应该可以通过 http://yourproject.com/faq URL 访问该包,如果你已在数据库中添加至少一个类别。
可选:加载 fixtures
如果你使用 doctrine-fixtures 包,你可以这样加载 fixtures
php bin/console doctrine:fixtures:load --fixtures=vendor/shakaran/faq-bundle/src/Shakaran/FaqBundle/DataFixtures/
配置
你可以选择性地将以下配置包含到你的 config.yml 中
shakaran_faq:
select_first_category_by_default: false
select_first_question_by_default: false
这两个配置都会默认打开用户尚未选择类别和/或问题时的第一个类别和/或问题。默认值都是 'false',所以如果你想这种行为,请将其设置为 'true'。
注意,还需要为 gedmo/doctrine-extensions 配置 Sluggable 和 Timestampable 行为(见 https://github.com/Atlantic18/DoctrineExtensions)。
高级
如果你想显示比默认的类别列表(包含所有问题和答案)更多的内容,你不应该导入包路由,而应该只复制实际使用的部分。
例如,如果你想为每个问题使用单独的页面,请使用 shakaran_faq_question_show 路由。
有关更多示例,请参阅 https://github.com/genj/faq-demo
FAQ
- 如何将其添加到 SonataAdmin?
你可以使用 GenjFaqAdminBundle: https://github.com/genj/GenjFaqAdminBundle 或者创建自己的管理类。