SonataProductBundle (symfony 2.8) instead of showing product create form there is “No object types available” button appearing

倾然丶 夕夏残阳落幕 提交于 2019-12-08 06:15:35

问题


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.

Here are the configurations:

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 Configuration

twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    form:
       resources:
           - 'SonataFormatterBundle:Form:formatter.html.twig'

Doctrine Configuration

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 Configuration

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?


回答1:


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

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



来源:https://stackoverflow.com/questions/48049617/sonataproductbundle-symfony-2-8-instead-of-showing-product-create-form-there-i

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!