SonataProductBundle (symfony 2.8) 没有显示产品创建表单,而是出现 "No object types available" 按钮
SonataProductBundle (symfony 2.8) instead of showing product create form there is "No object types available" button appearing
Sonata Admin 启用了 SonataProductBundle。
根据文档配置的产品实体。
但是,在尝试在管理面板中创建新的 "Product" 时,
"No object types available" 按钮出现而不是编辑形式。
配置如下:
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: sonata/sonata_product.yml }
- { resource: '@ApplicationSonataProductBundle/Resources/config/product.yml' }
parameters:
locale: en
framework:
esi: ~
translator: { fallbacks: ["%locale%"] }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
serializer: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true
树枝配置
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
form:
resources:
- 'SonataFormatterBundle:Form:formatter.html.twig'
学说配置
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
types:
json: Sonata\Doctrine\Types\JsonType
currency: Sonata\Component\Currency\CurrencyDoctrineType
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
FOSUserBundle: ~
ApplicationSonataUserBundle: ~
SonataUserBundle: ~
SonataMediaBundle: ~
ApplicationSonataMediaBundle: ~
SonataNotificationBundle: ~
ApplicationSonataNotificationBundle: ~
SonataClassificationBundle: ~
ApplicationSonataClassificationBundle: ~
SonataClassificationBundle: ~
ApplicationSonataCustomerBundle: ~
SonataCustomerBundle: ~
ApplicationSonataProductBundle: ~
SonataProductBundle: ~
ApplicationSonataPageBundle: ~
SonataPageBundle: ~
Swiftmailer 配置
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
sonata_block:
default_contexts: [cms]
blocks:
# enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
# ...
sonata.user.block.menu: # used to display the menu in profile pages
sonata.user.block.account: # used to display menu option (login option)
sonata.block.service.text:
sonata.order.block.recent_orders:
context_manager: sonata.page.block.context_manager
sonata_admin:
title: IASP
title_logo: /bundles/sonataadmin/logo_title.png
options:
html5_validate: true # enable or disable html5 form validation
confirm_exit: true # enable or disable a confirmation before navigating away
use_select2: true # enable or disable usage of the Select2 jQuery library
use_icheck: true # enable or disable usage of the iCheck library
use_bootlint: false # enable or disable usage of Bootlint
use_stickyforms: true # enable or disable the floating buttons
form_type: standard # can also be 'horizontal'
templates:
dashboard: SonataAdminBundle:Core:dashboard.html.twig
edit: SonataAdminBundle:CRUD:edit.html.twig
tab_menu_template: SonataAdminBundle:Core:tab_menu_template.html.twig
fos_user:
db_driver: orm # can be orm or mongodb (support is also available within FOSUser for couchdb, propel but none is given for SonataUserBundle)
firewall_name: main
user_class: Application\Sonata\UserBundle\Entity\User
group:
group_class: Application\Sonata\UserBundle\Entity\Group
profile:
# Authentication Form
form:
type: fos_user_profile
handler: fos_user.profile.form.handler.default
name: fos_user_profile_form
validation_groups: [Authentication] # Please note : this is not the default value
sonata_user:
security_acl: false
manager_type: orm # Can be orm for mongodb
table:
user_group: "my_custom_user_group_association_table_name"
impersonating:
route: page_slug
parameters: { path: / }
class: # Entity Classes
user: Application\Sonata\UserBundle\Entity\User
group: Application\Sonata\UserBundle\Entity\Group
admin: # Admin Classes
user:
class: Sonata\UserBundle\Admin\Entity\UserAdmin
controller: SonataAdminBundle:CRUD
translation: SonataUserBundle
group:
class: Sonata\UserBundle\Admin\Entity\GroupAdmin
controller: SonataAdminBundle:CRUD
translation: SonataUserBundle
profile:
form:
type: sonata_user_profile
handler: sonata.user.profile.form.handler.default
name: sonata_user_profile_form
validation_groups: [Profile]
# Profile show page is a dashboard as in SonataAdminBundle
dashboard:
blocks:
- { position: left, type: sonata.block.service.text, settings: { content: "<h2>Welcome!</h2> This is a sample user profile dashboard, feel free to override it in the configuration! Want to make this text dynamic? For instance display the user's name? Create a dedicated block and edit the configuration!"} }
- { position: left, type: sonata.order.block.recent_orders, settings: { title: Recent Orders, number: 5, mode: public }}
#- { position: right, type: sonata.timeline.block.timeline, settings: { max_per_page: 15 }}
#- { position: right, type: sonata.news.block.recent_posts, settings: { title: Recent Posts, number: 5, mode: public }}
#- { position: right, type: sonata.news.block.recent_comments, settings: { title: Recent Comments, number: 5, mode: public }}
# Customize user portal menu by setting links
menu:
- { route: 'sonata_user_profile_show', label: 'sonata_profile_title', domain: 'SonataUserBundle'}
- { route: 'sonata_user_profile_edit', label: 'link_edit_profile', domain: 'SonataUserBundle'}
- { route: 'sonata_customer_addresses', label: 'link_list_addresses', domain: 'SonataCustomerBundle'}
- { route: 'sonata_user_profile_edit_authentication', label: 'link_edit_authentication', domain: 'SonataUserBundle'}
- { route: 'sonata_order_index', label: 'order_list', domain: 'SonataOrderBundle'}
sonata_delivery:
services:
free_address_required:
name: Free
priority: 1
code: free
selector: sonata.delivery.selector.default
sonata_media:
class:
media: Application\Sonata\MediaBundle\Entity\Media
gallery: Application\Sonata\MediaBundle\Entity\Gallery
gallery_has_media: Application\Sonata\MediaBundle\Entity\GalleryHasMedia
category: Application\Sonata\ClassificationBundle\Entity\Categor
default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
- sonata.media.provider.vimeo
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
cdn:
server:
path: /uploads/media # http://media.sonata-project.org/
filesystem:
local:
directory: "%kernel.root_dir%/../web/uploads/media"
create: false
providers:
image:
thumbnail: sonata.media.thumbnail.consumer.format
vimeo:
thumbnail: sonata.media.thumbnail.consumer.format
youtube:
thumbnail: sonata.media.thumbnail.consumer.format
dailymotion:
thumbnail: sonata.media.thumbnail.consumer.format
file:
allowed_extensions: ['mp4', 'flv']
allowed_mime_types: ['video/mp4', 'video/x-flv']
thumbnail: sonata.media.thumbnail.consumer.format
image:
resizer: sonata.media.resizer.square
sonata_payment:
services:
pass:
name: Pass
code: pass
browser: sonata.payment.browser.curl
transformers:
basket: sonata.payment.transformer.basket
order: sonata.payment.transformer.order
options:
shop_secret_key: assdsds
url_callback: sonata_payment_callback
url_return_ko: sonata_payment_error
url_return_ok: sonata_payment_confirmation
transformers:
order: sonata.payment.transformer.order
basket: sonata.payment.transformer.basket
sonata_price:
currency: EUR
sonata_customer:
class:
customer: Application\Sonata\CustomerBundle\Entity\Customer
address: Application\Sonata\CustomerBundle\Entity\Address
order: Application\Sonata\OrderBundle\Entity\Order
user: Application\Sonata\UserBundle\Entity\User
# You can also implement custom components classes
customer_selector: Sonata\Component\Customer\CustomerSelector
sonata_notification:
backend: sonata.notification.backend.runtime
admin:
enabled: false
sonata_classification:
class:
tag: Application\Sonata\ClassificationBundle\Entity\Tag
category: Application\Sonata\ClassificationBundle\Entity\Category
collection: Application\Sonata\ClassificationBundle\Entity\Collection
media: Application\Sonata\MediaBundle\Entity\Media
context: Application\Sonata\ClassificationBundle\Entity\Context
admin:
tag:
class: Sonata\ClassificationBundle\Admin\TagAdmin
controller: SonataAdminBundle:CRUD
translation: SonataClassificationBundle
category:
class: Sonata\ClassificationBundle\Admin\CategoryAdmin
controller: SonataClassificationBundle:CategoryAdmin
translation: SonataClassificationBundle
collection:
class: Sonata\ClassificationBundle\Admin\CollectionAdmin
controller: SonataAdminBundle:CRUD
translation: SonataClassificationBundle
context:
class: Sonata\ClassificationBundle\Admin\ContextAdmin
controller: SonataAdminBundle:CRUD
translation: SonataClassificationBundle
jms_serializer:
enable_short_alias: true
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
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
sonata_product:
class:
product: Application\Sonata\ProductBundle\Entity\Product
package: Application\Sonata\ProductBundle\Entity\Package
product_category: Application\Sonata\ProductBundle\Entity\ProductCategory
product_collection: Application\Sonata\ProductBundle\Entity\ProductCollection
category: Application\Sonata\ClassificationBundle\Entity\Category
collection: Application\Sonata\ClassificationBundle\Entity\Collection
delivery: Application\Sonata\ProductBundle\Entity\Delivery
gallery: Application\Sonata\MediaBundle\Entity\Gallery
sonata_page:
slugify_service: sonata.core.slugify.cocur # old BC value is sonata.core.slugify.native
multisite: host_by_locale
default_template: default # template key from templates section, used as default for new pages
templates:
default: { path: 'SonataPageBundle::layout.html.twig', name: 'default' }
2columns: { path: 'SonataPageBundle::2columns_layout.html.twig', name: '2 columns layout' }
# Generates a snapshot when a page is saved (from the admin)
direct_publication: false # or %kernel.debug% if you want to publish in dev mode (but not in prod)
use_streamed_response: false # set the value to false in debug mode or if the reverse proxy does not handle streamed response
ignore_route_patterns:
- ^(.*)admin(.*) # ignore admin route, ie route containing 'admin'
- ^_(.*) # ignore symfony routes
ignore_routes:
- sonata_page_cache_esi
- sonata_page_cache_ssi
- sonata_page_js_sync_cache
- sonata_page_js_async_cache
- sonata_cache_esi
- sonata_cache_ssi
- sonata_cache_js_async
- sonata_cache_js_sync
- sonata_cache_apc
ignore_uri_patterns:
- ^/admin\/ # ignore admin route, ie route containing 'admin'
page_defaults:
homepage: {decorate: false, enabled: true} # disable decoration for homepage, key - is a page route
# manage the http errors
catch_exceptions:
not_found: [404] # render 404 page with "not_found" key (name generated: _page_internal_error_{key})
fatal: [500] # so you can use the same page for different http errors or specify specific page for each error
cache_invalidation:
service: sonata.page.cache.invalidation.simple
recorder: sonata.page.cache.recorder
classes:
"Application\Sonata\PageBundle\Entity\Block": getId
cmf_routing:
chain:
routers_by_id:
# enable the DynamicRouter with high priority to allow overwriting configured routes with content
#cmf_routing.dynamic_router: 200
# enable the symfony default router with a lower priority
sonata.page.router: 150
router.default: 100
composer.json
{
"name": "dmlabs-5/iasp_new",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
" \": "src",
"AppBundle\": "src/AppBundle",
"Application\": "src/Application",
"ApplicationSonataMediaBundle\": "src/Application/Sonata/MediaBundle",
"ApplicationSonataNotificationBundle\": "src/Application/Sonata/NotificationBundle",
"ApplicationSonataCustomerBundle\":"src/Application/Sonata/CustomerBundle",
"ApplicationSonataDeliveryBundle\":"src/Application/Sonata/DeliveryBundle",
"ApplicationSonataClassificationBundle\":"src/Application/Sonata/ClassificationBundle"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
"require": {
"php": ">=5.3.9",
"symfony/symfony": "2.8.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"ocramius/proxy-manager": "^1.0",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"sonata-project/admin-bundle": "3.x-dev",
"sonata-project/doctrine-orm-admin-bundle": "3.x-dev",
"sonata-project/easy-extends-bundle": "^2.3",
"sonata-project/user-bundle": "3.x-dev",
"doctrine/doctrine-migrations-bundle": "^1.0",
"sonata-project/classification-bundle": "^3.0",
"sonata-project/cache-bundle": "^2.3",
"sonata-project/seo-bundle": "^2.1",
"sonata-project/notification-bundle": "^3.1",
"sonata-project/page-bundle": "^3.4",
"sonata-project/media-bundle": "^3.5",
"sonata-project/ecommerce": "3.x-dev",
"sonata-project/intl-bundle": "2.x-dev",
"sonata-project/formatter-bundle": "^3.1",
"jms/serializer-bundle": "^1.0",
"twig/twig": "^1.34",
"sonata-project/translation-bundle": "2.0.2"
},
"require-dev": {
"sensio/generator-bundle": "~3.0",
"symfony/phpunit-bridge": "~2.7"
},
"scripts": {
"post-install-cmd": [
"Incenteev\ParameterHandler\ScriptHandler::buildParameters",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::prepareDeploymentTarget"
],
"post-update-cmd": [
"Incenteev\ParameterHandler\ScriptHandler::buildParameters",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::prepareDeploymentTarget"
]
},
"config": {
"bin-dir": "bin"
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": null
}
}
有谁知道,为什么会出现这个按钮?是不是设置错了?
你会得到同样的错误,因为你可能做同样的错误?查看您的简单实体并注意继承的 Product class ...您将 Product class 定义为抽象 ...但是您的 Product class 正在扩展 BaseProduct class未显示在您的 post ...
中
我觉得这个继承链很奇怪。你能检查一下,你的 BaseProduct 不也是抽象的吗?
Sonata Admin 启用了 SonataProductBundle。 根据文档配置的产品实体。 但是,在尝试在管理面板中创建新的 "Product" 时, "No object types available" 按钮出现而不是编辑形式。
配置如下:
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: sonata/sonata_product.yml }
- { resource: '@ApplicationSonataProductBundle/Resources/config/product.yml' }
parameters:
locale: en
framework:
esi: ~
translator: { fallbacks: ["%locale%"] }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
serializer: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true
树枝配置
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
form:
resources:
- 'SonataFormatterBundle:Form:formatter.html.twig'
学说配置
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
types:
json: Sonata\Doctrine\Types\JsonType
currency: Sonata\Component\Currency\CurrencyDoctrineType
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
FOSUserBundle: ~
ApplicationSonataUserBundle: ~
SonataUserBundle: ~
SonataMediaBundle: ~
ApplicationSonataMediaBundle: ~
SonataNotificationBundle: ~
ApplicationSonataNotificationBundle: ~
SonataClassificationBundle: ~
ApplicationSonataClassificationBundle: ~
SonataClassificationBundle: ~
ApplicationSonataCustomerBundle: ~
SonataCustomerBundle: ~
ApplicationSonataProductBundle: ~
SonataProductBundle: ~
ApplicationSonataPageBundle: ~
SonataPageBundle: ~
Swiftmailer 配置
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
sonata_block:
default_contexts: [cms]
blocks:
# enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
# ...
sonata.user.block.menu: # used to display the menu in profile pages
sonata.user.block.account: # used to display menu option (login option)
sonata.block.service.text:
sonata.order.block.recent_orders:
context_manager: sonata.page.block.context_manager
sonata_admin:
title: IASP
title_logo: /bundles/sonataadmin/logo_title.png
options:
html5_validate: true # enable or disable html5 form validation
confirm_exit: true # enable or disable a confirmation before navigating away
use_select2: true # enable or disable usage of the Select2 jQuery library
use_icheck: true # enable or disable usage of the iCheck library
use_bootlint: false # enable or disable usage of Bootlint
use_stickyforms: true # enable or disable the floating buttons
form_type: standard # can also be 'horizontal'
templates:
dashboard: SonataAdminBundle:Core:dashboard.html.twig
edit: SonataAdminBundle:CRUD:edit.html.twig
tab_menu_template: SonataAdminBundle:Core:tab_menu_template.html.twig
fos_user:
db_driver: orm # can be orm or mongodb (support is also available within FOSUser for couchdb, propel but none is given for SonataUserBundle)
firewall_name: main
user_class: Application\Sonata\UserBundle\Entity\User
group:
group_class: Application\Sonata\UserBundle\Entity\Group
profile:
# Authentication Form
form:
type: fos_user_profile
handler: fos_user.profile.form.handler.default
name: fos_user_profile_form
validation_groups: [Authentication] # Please note : this is not the default value
sonata_user:
security_acl: false
manager_type: orm # Can be orm for mongodb
table:
user_group: "my_custom_user_group_association_table_name"
impersonating:
route: page_slug
parameters: { path: / }
class: # Entity Classes
user: Application\Sonata\UserBundle\Entity\User
group: Application\Sonata\UserBundle\Entity\Group
admin: # Admin Classes
user:
class: Sonata\UserBundle\Admin\Entity\UserAdmin
controller: SonataAdminBundle:CRUD
translation: SonataUserBundle
group:
class: Sonata\UserBundle\Admin\Entity\GroupAdmin
controller: SonataAdminBundle:CRUD
translation: SonataUserBundle
profile:
form:
type: sonata_user_profile
handler: sonata.user.profile.form.handler.default
name: sonata_user_profile_form
validation_groups: [Profile]
# Profile show page is a dashboard as in SonataAdminBundle
dashboard:
blocks:
- { position: left, type: sonata.block.service.text, settings: { content: "<h2>Welcome!</h2> This is a sample user profile dashboard, feel free to override it in the configuration! Want to make this text dynamic? For instance display the user's name? Create a dedicated block and edit the configuration!"} }
- { position: left, type: sonata.order.block.recent_orders, settings: { title: Recent Orders, number: 5, mode: public }}
#- { position: right, type: sonata.timeline.block.timeline, settings: { max_per_page: 15 }}
#- { position: right, type: sonata.news.block.recent_posts, settings: { title: Recent Posts, number: 5, mode: public }}
#- { position: right, type: sonata.news.block.recent_comments, settings: { title: Recent Comments, number: 5, mode: public }}
# Customize user portal menu by setting links
menu:
- { route: 'sonata_user_profile_show', label: 'sonata_profile_title', domain: 'SonataUserBundle'}
- { route: 'sonata_user_profile_edit', label: 'link_edit_profile', domain: 'SonataUserBundle'}
- { route: 'sonata_customer_addresses', label: 'link_list_addresses', domain: 'SonataCustomerBundle'}
- { route: 'sonata_user_profile_edit_authentication', label: 'link_edit_authentication', domain: 'SonataUserBundle'}
- { route: 'sonata_order_index', label: 'order_list', domain: 'SonataOrderBundle'}
sonata_delivery:
services:
free_address_required:
name: Free
priority: 1
code: free
selector: sonata.delivery.selector.default
sonata_media:
class:
media: Application\Sonata\MediaBundle\Entity\Media
gallery: Application\Sonata\MediaBundle\Entity\Gallery
gallery_has_media: Application\Sonata\MediaBundle\Entity\GalleryHasMedia
category: Application\Sonata\ClassificationBundle\Entity\Categor
default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
- sonata.media.provider.vimeo
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
cdn:
server:
path: /uploads/media # http://media.sonata-project.org/
filesystem:
local:
directory: "%kernel.root_dir%/../web/uploads/media"
create: false
providers:
image:
thumbnail: sonata.media.thumbnail.consumer.format
vimeo:
thumbnail: sonata.media.thumbnail.consumer.format
youtube:
thumbnail: sonata.media.thumbnail.consumer.format
dailymotion:
thumbnail: sonata.media.thumbnail.consumer.format
file:
allowed_extensions: ['mp4', 'flv']
allowed_mime_types: ['video/mp4', 'video/x-flv']
thumbnail: sonata.media.thumbnail.consumer.format
image:
resizer: sonata.media.resizer.square
sonata_payment:
services:
pass:
name: Pass
code: pass
browser: sonata.payment.browser.curl
transformers:
basket: sonata.payment.transformer.basket
order: sonata.payment.transformer.order
options:
shop_secret_key: assdsds
url_callback: sonata_payment_callback
url_return_ko: sonata_payment_error
url_return_ok: sonata_payment_confirmation
transformers:
order: sonata.payment.transformer.order
basket: sonata.payment.transformer.basket
sonata_price:
currency: EUR
sonata_customer:
class:
customer: Application\Sonata\CustomerBundle\Entity\Customer
address: Application\Sonata\CustomerBundle\Entity\Address
order: Application\Sonata\OrderBundle\Entity\Order
user: Application\Sonata\UserBundle\Entity\User
# You can also implement custom components classes
customer_selector: Sonata\Component\Customer\CustomerSelector
sonata_notification:
backend: sonata.notification.backend.runtime
admin:
enabled: false
sonata_classification:
class:
tag: Application\Sonata\ClassificationBundle\Entity\Tag
category: Application\Sonata\ClassificationBundle\Entity\Category
collection: Application\Sonata\ClassificationBundle\Entity\Collection
media: Application\Sonata\MediaBundle\Entity\Media
context: Application\Sonata\ClassificationBundle\Entity\Context
admin:
tag:
class: Sonata\ClassificationBundle\Admin\TagAdmin
controller: SonataAdminBundle:CRUD
translation: SonataClassificationBundle
category:
class: Sonata\ClassificationBundle\Admin\CategoryAdmin
controller: SonataClassificationBundle:CategoryAdmin
translation: SonataClassificationBundle
collection:
class: Sonata\ClassificationBundle\Admin\CollectionAdmin
controller: SonataAdminBundle:CRUD
translation: SonataClassificationBundle
context:
class: Sonata\ClassificationBundle\Admin\ContextAdmin
controller: SonataAdminBundle:CRUD
translation: SonataClassificationBundle
jms_serializer:
enable_short_alias: true
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
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
sonata_product:
class:
product: Application\Sonata\ProductBundle\Entity\Product
package: Application\Sonata\ProductBundle\Entity\Package
product_category: Application\Sonata\ProductBundle\Entity\ProductCategory
product_collection: Application\Sonata\ProductBundle\Entity\ProductCollection
category: Application\Sonata\ClassificationBundle\Entity\Category
collection: Application\Sonata\ClassificationBundle\Entity\Collection
delivery: Application\Sonata\ProductBundle\Entity\Delivery
gallery: Application\Sonata\MediaBundle\Entity\Gallery
sonata_page:
slugify_service: sonata.core.slugify.cocur # old BC value is sonata.core.slugify.native
multisite: host_by_locale
default_template: default # template key from templates section, used as default for new pages
templates:
default: { path: 'SonataPageBundle::layout.html.twig', name: 'default' }
2columns: { path: 'SonataPageBundle::2columns_layout.html.twig', name: '2 columns layout' }
# Generates a snapshot when a page is saved (from the admin)
direct_publication: false # or %kernel.debug% if you want to publish in dev mode (but not in prod)
use_streamed_response: false # set the value to false in debug mode or if the reverse proxy does not handle streamed response
ignore_route_patterns:
- ^(.*)admin(.*) # ignore admin route, ie route containing 'admin'
- ^_(.*) # ignore symfony routes
ignore_routes:
- sonata_page_cache_esi
- sonata_page_cache_ssi
- sonata_page_js_sync_cache
- sonata_page_js_async_cache
- sonata_cache_esi
- sonata_cache_ssi
- sonata_cache_js_async
- sonata_cache_js_sync
- sonata_cache_apc
ignore_uri_patterns:
- ^/admin\/ # ignore admin route, ie route containing 'admin'
page_defaults:
homepage: {decorate: false, enabled: true} # disable decoration for homepage, key - is a page route
# manage the http errors
catch_exceptions:
not_found: [404] # render 404 page with "not_found" key (name generated: _page_internal_error_{key})
fatal: [500] # so you can use the same page for different http errors or specify specific page for each error
cache_invalidation:
service: sonata.page.cache.invalidation.simple
recorder: sonata.page.cache.recorder
classes:
"Application\Sonata\PageBundle\Entity\Block": getId
cmf_routing:
chain:
routers_by_id:
# enable the DynamicRouter with high priority to allow overwriting configured routes with content
#cmf_routing.dynamic_router: 200
# enable the symfony default router with a lower priority
sonata.page.router: 150
router.default: 100
composer.json
{
"name": "dmlabs-5/iasp_new",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
" \": "src",
"AppBundle\": "src/AppBundle",
"Application\": "src/Application",
"ApplicationSonataMediaBundle\": "src/Application/Sonata/MediaBundle",
"ApplicationSonataNotificationBundle\": "src/Application/Sonata/NotificationBundle",
"ApplicationSonataCustomerBundle\":"src/Application/Sonata/CustomerBundle",
"ApplicationSonataDeliveryBundle\":"src/Application/Sonata/DeliveryBundle",
"ApplicationSonataClassificationBundle\":"src/Application/Sonata/ClassificationBundle"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
"require": {
"php": ">=5.3.9",
"symfony/symfony": "2.8.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"ocramius/proxy-manager": "^1.0",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"sonata-project/admin-bundle": "3.x-dev",
"sonata-project/doctrine-orm-admin-bundle": "3.x-dev",
"sonata-project/easy-extends-bundle": "^2.3",
"sonata-project/user-bundle": "3.x-dev",
"doctrine/doctrine-migrations-bundle": "^1.0",
"sonata-project/classification-bundle": "^3.0",
"sonata-project/cache-bundle": "^2.3",
"sonata-project/seo-bundle": "^2.1",
"sonata-project/notification-bundle": "^3.1",
"sonata-project/page-bundle": "^3.4",
"sonata-project/media-bundle": "^3.5",
"sonata-project/ecommerce": "3.x-dev",
"sonata-project/intl-bundle": "2.x-dev",
"sonata-project/formatter-bundle": "^3.1",
"jms/serializer-bundle": "^1.0",
"twig/twig": "^1.34",
"sonata-project/translation-bundle": "2.0.2"
},
"require-dev": {
"sensio/generator-bundle": "~3.0",
"symfony/phpunit-bridge": "~2.7"
},
"scripts": {
"post-install-cmd": [
"Incenteev\ParameterHandler\ScriptHandler::buildParameters",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::prepareDeploymentTarget"
],
"post-update-cmd": [
"Incenteev\ParameterHandler\ScriptHandler::buildParameters",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile",
"Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::prepareDeploymentTarget"
]
},
"config": {
"bin-dir": "bin"
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": null
}
}
有谁知道,为什么会出现这个按钮?是不是设置错了?
你会得到同样的错误,因为你可能做同样的错误?查看您的简单实体并注意继承的 Product class ...您将 Product class 定义为抽象 ...但是您的 Product class 正在扩展 BaseProduct class未显示在您的 post ...
中我觉得这个继承链很奇怪。你能检查一下,你的 BaseProduct 不也是抽象的吗?