SonataProductBundle(symfony 2.8)而不是显示产品创建表单,而是“没有可用的对象类型"按钮出现 [英] SonataProductBundle (symfony 2.8) instead of showing product create form there is "No object types available" button appearing

查看:30
本文介绍了SonataProductBundle(symfony 2.8)而不是显示产品创建表单,而是“没有可用的对象类型"按钮出现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有启用了 SonataProductBundle 的 Sonata Admin.根据文档配置的产品实体.但是,在尝试在管理面板中创建新的产品"时,出现没有可用的对象类型"按钮而不是编辑形式.

There are Sonata Admin with enabled SonataProductBundle. Product entity configured accordingly to documentation. But, upon attempting to create new "Product" in admin panel, "No object types available" button appears instead of edit form of.

以下是配置:

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
        }
    }

有谁知道为什么会出现这个按钮?是不是配置错了?

Does anyone know, why this button appears? Is it configured in wrong way?

推荐答案

你得到同样的错误,因为你可能做同样的错误?查看您的简单实体并注意继承的 Product 类...您将 Product 类定义为抽象类...但您的 Product 类正在扩展一个 BaseProduct 类,该类未在您的帖子中显示...

You get the same error cause you are maybe doing the same wrong? Look at your Simple Entity and notice the inherited Product class ... you define your Product class as abstract ... but your Product class is extending a BaseProduct class which is not shown in your post ...

这个继承链在我看来很奇怪.你能检查一下,你的 BaseProduct 不是也抽象的吗?

This inheritance chain look strange to me. Can you check, your BaseProduct is not also abstract?

这篇关于SonataProductBundle(symfony 2.8)而不是显示产品创建表单,而是“没有可用的对象类型"按钮出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆