Sonata Formatter 和 Sonata Admin 与 Symfony 3 的集成
Sonata Formatter and Sonata Admin Integration with Symfony 3
我正在尝试在我的管理中添加格式化程序。
我安装了 SonataAdminBundle
(工作正常)和 SonataFormatterBundle
。
这是(一部分)我的config.yml
sonata_block:
default_contexts: [cms]
blocks:
# enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
sonata_formatter:
default_formatter: text
formatters:
markdown:
service: sonata.formatter.text.markdown
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig #keep this commented unless you are using media bundle.
text:
service: sonata.formatter.text.text
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig
rawhtml:
service: sonata.formatter.text.raw
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig
richhtml:
service: sonata.formatter.text.raw
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig
twig:
service: sonata.formatter.text.twigengine
extensions: [] # Twig formatter cannot have extensions
ckeditor:
templates:
browser: 'SonataFormatterBundle:Ckeditor:browser.html.twig'
upload: 'SonataFormatterBundle:Ckeditor:upload.html.twig'
ivory_ck_editor:
configs:
default:
language: '%locale%'
toolbar: standard
sonata_admin:
templates:
# default global templates
layout: SonataAdminBundle::layout.html.twig
官方文档要求在app/Resources/SonataAdminBundle/views/
中加一个layout.html.twig
。在 Symfony 3 中,没有这样的路径,所以我创建了它。
在ArticleAdmin.php中,我添加了
->add('preview', 'sonata_simple_formatter_type', array('format' => 'richhtml', 'attr' => array('class' => 'ckeditor')))
我也试过了
->add('preview', 'sonata_simple_formatter_type', array(
'format' => 'richhtml',
'ckeditor_context' => 'default', // optional
))
但是没有效果,我的预览区里没有格式化程序
我注意到 'new' layout.html.twig
指的是 bundles/sonataformatter/...
和 bundles/ivoryckeditor/...
文件,但其中没有 ivoryckeditor
或 sonataformatter
web/bundles/
.
可能是版本问题。所以,这是我的 composer.json 的 "require" 部分:
"require": {
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"friendsofsymfony/rest-bundle": "^2.2",
"incenteev/composer-parameter-handler": "^2.0",
"nelmio/api-doc-bundle": "^2.13",
"sensio/distribution-bundle": "^5.0.19",
"sensio/framework-extra-bundle": "^3.0.2",
"sonata-project/admin-bundle": "^3.20",
"sonata-project/doctrine-orm-admin-bundle": "^3.1",
"sonata-project/easy-extends-bundle": "^2.2",
"sonata-project/formatter-bundle": "^3.2",
"sonata-project/google-authenticator": "^1.0",
"sonata-project/media-bundle": "^3.6",
"stof/doctrine-extensions-bundle": "^1.2.2",
"symfony/monolog-bundle": "^3.1.0",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.3.10",
"symfony/symfony": "3.3.*",
"twig/twig": "^1.0||^2.0"
谢谢,
- 安装包后是否安装了资产?
我的意思是 Symfony 控制台命令
bin/console assets:install
我不确定你说的 layout.html.twig 是哪个,但可能是 standard_layout.html。这个布局你必须添加到你的 AppBundle 中(如果你还没有覆盖 SonataBundle)。
在我的例子中,布局路径是:AppBundle/Resources/views/Admin/standard_layout.html.twig
.
在你的 config.yml
中,你必须用你的替代标准奏鸣曲布局:
sonata_admin:
title: 'Yor title'
templates:
## ...
layout: 'AppBundle::Admin/standard_layout.html.twig'
## ...
我正在尝试在我的管理中添加格式化程序。
我安装了 SonataAdminBundle
(工作正常)和 SonataFormatterBundle
。
这是(一部分)我的config.yml
sonata_block:
default_contexts: [cms]
blocks:
# enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
sonata_formatter:
default_formatter: text
formatters:
markdown:
service: sonata.formatter.text.markdown
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig #keep this commented unless you are using media bundle.
text:
service: sonata.formatter.text.text
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig
rawhtml:
service: sonata.formatter.text.raw
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig
richhtml:
service: sonata.formatter.text.raw
extensions:
- sonata.formatter.twig.control_flow
- sonata.formatter.twig.gist
- sonata.media.formatter.twig
twig:
service: sonata.formatter.text.twigengine
extensions: [] # Twig formatter cannot have extensions
ckeditor:
templates:
browser: 'SonataFormatterBundle:Ckeditor:browser.html.twig'
upload: 'SonataFormatterBundle:Ckeditor:upload.html.twig'
ivory_ck_editor:
configs:
default:
language: '%locale%'
toolbar: standard
sonata_admin:
templates:
# default global templates
layout: SonataAdminBundle::layout.html.twig
官方文档要求在app/Resources/SonataAdminBundle/views/
中加一个layout.html.twig
。在 Symfony 3 中,没有这样的路径,所以我创建了它。
在ArticleAdmin.php中,我添加了
->add('preview', 'sonata_simple_formatter_type', array('format' => 'richhtml', 'attr' => array('class' => 'ckeditor')))
我也试过了
->add('preview', 'sonata_simple_formatter_type', array(
'format' => 'richhtml',
'ckeditor_context' => 'default', // optional
))
但是没有效果,我的预览区里没有格式化程序
我注意到 'new' layout.html.twig
指的是 bundles/sonataformatter/...
和 bundles/ivoryckeditor/...
文件,但其中没有 ivoryckeditor
或 sonataformatter
web/bundles/
.
可能是版本问题。所以,这是我的 composer.json 的 "require" 部分:
"require": {
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"friendsofsymfony/rest-bundle": "^2.2",
"incenteev/composer-parameter-handler": "^2.0",
"nelmio/api-doc-bundle": "^2.13",
"sensio/distribution-bundle": "^5.0.19",
"sensio/framework-extra-bundle": "^3.0.2",
"sonata-project/admin-bundle": "^3.20",
"sonata-project/doctrine-orm-admin-bundle": "^3.1",
"sonata-project/easy-extends-bundle": "^2.2",
"sonata-project/formatter-bundle": "^3.2",
"sonata-project/google-authenticator": "^1.0",
"sonata-project/media-bundle": "^3.6",
"stof/doctrine-extensions-bundle": "^1.2.2",
"symfony/monolog-bundle": "^3.1.0",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.3.10",
"symfony/symfony": "3.3.*",
"twig/twig": "^1.0||^2.0"
谢谢,
- 安装包后是否安装了资产?
我的意思是 Symfony 控制台命令
bin/console assets:install
我不确定你说的 layout.html.twig 是哪个,但可能是 standard_layout.html。这个布局你必须添加到你的 AppBundle 中(如果你还没有覆盖 SonataBundle)。 在我的例子中,布局路径是:
AppBundle/Resources/views/Admin/standard_layout.html.twig
.
在你的config.yml
中,你必须用你的替代标准奏鸣曲布局:sonata_admin: title: 'Yor title' templates: ## ... layout: 'AppBundle::Admin/standard_layout.html.twig' ## ...