簡體   English   中英

Sonata管理員搜索功能

[英]Sonata Admin search feature

我最近更新了我的symfony2項目供應商。 因此,我得到了最新的Sonata Admin Bundle版本(從2.2.5更新到2.2.6)。

我看到此版本中有一個新的搜索功能,但無法正常使用。 我不知道我在做什么錯。 讓我發狂。

這是我的composer.json require:

    "require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.3.*",
    "doctrine/orm": ">=2.2.3,<2.4-dev",
    "doctrine/doctrine-bundle": "1.2.*",
    "twig/extensions": "1.0.*",
    "symfony/assetic-bundle": "2.3.*",
    "symfony/swiftmailer-bundle": "2.3.*",
    "symfony/monolog-bundle": "2.3.*",
    "sensio/distribution-bundle": "2.3.*",
    "sensio/framework-extra-bundle": "2.3.*",
    "sensio/generator-bundle": "2.3.*",
    "incenteev/composer-parameter-handler": "~2.0",

    "jms/security-extra-bundle": "1.5.*",
    "doctrine/data-fixtures": "1.0.*",
    "doctrine/doctrine-fixtures-bundle": "dev-master",
    "doctrine/migrations": "dev-master",
    "doctrine/doctrine-migrations-bundle": "dev-master",
    "stof/doctrine-extensions-bundle": "1.1.*",
    "friendsofsymfony/user-bundle" : "1.3.*",
    "knplabs/knp-menu-bundle": "1.1.*",
    "knplabs/gaufrette": "dev-master",
    "knplabs/knp-paginator-bundle": "2.3.*",

    "sonata-project/easy-extends-bundle" : "2.1.*",
    "sonata-project/cache-bundle": "2.1.*",
    "sonata-project/jquery-bundle": "1.8.*",
    "sonata-project/exporter": "1.3.*",
    "sonata-project/block-bundle": "2.2.*",
    "sonata-project/user-bundle": "2.2.*@dev",
    "sonata-project/admin-bundle": "2.2.*",
    "sonata-project/doctrine-orm-admin-bundle": "2.2.*",
    "sonata-project/doctrine-extensions": "1.0.0",
    "sonata-project/google-authenticator": "1.0.0",
    "sonata-project/intl-bundle": "2.2.*@dev",
    "sonata-project/media-bundle": "2.2.*",
    "sonata-project/notification-bundle": "2.2.*",
    "sonata-project/formatter-bundle": "2.3.*",

    "hwi/oauth-bundle": "0.3.*@dev",
    "elao/web-profiler-extra-bundle": "2.3.*@dev",
    "liip/functional-test-bundle": "dev-master",
    "guzzle/guzzle": "v3.4.1",
    "jms/serializer-bundle": "0.12.*@dev",
    "friendsofsymfony/rest-bundle": "0.12.0",
    "friendsofsymfony/comment-bundle": "2.0.*@dev",
    "whiteoctober/breadcrumbs-bundle": "dev-master",
    "igorw/file-serve-bundle": "1.0.*",
    "zendframework/zendpdf": "2.0.*"
},

在更新之后,我立即擁有搜索功能,抱怨一個不存在的塊:

在第48行的SonataAdminBundle:Core:search.html.twig中的模板渲染過程中引發了異常(“塊類型sonata.admin.block.search_result不存在”)。

我通過在config.yml聲明該塊來糾正了這一config.yml

sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list:
            contexts:   [admin]

        sonata.admin.block.search_result:
            contexts:   [admin]

        sonata.block.service.text:
        sonata.block.service.rss:

但是現在,它抱怨沒有設置請求:

在第48行的SonataAdminBundle:Core:search.html.twig中呈現模板(“尚未設置Request對象”)的過程中引發了異常。

我真的不明白我在這里想念的是什么。 任何幫助將非常感激。

在奏鳴曲塊配置中添加該塊:

sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list: #default sonata admin block
            contexts: [admin]
        sonata.admin.block.search_result:
            contexts: [admin]

我遇到了同樣的錯誤。 可能是因為您在管理員中使用了“請求”。

$this->getRequest()->get('context', 'default')

搜索不會設置請求,並且如果您嘗試獲取請求,則管理員會觸發異常。

在我的管理員中,我正在使用一個函數來訪問請求參數並避免異常。

public function getRequestParameterOrNull( $key, $default = null ){
    try{
        return $this->getRequest()->get($key, $default);
    }catch(\Exception $e){
        return null;
    }
}

在下面找到完整的配置:

composer.json

"require": {
    "php": ">=5.4",
    "symfony/symfony": "2.2.*",
    "doctrine/orm": "~2.2,>=2.2.3",
    "doctrine/doctrine-bundle": "1.2.*",
    "twig/extensions": "dev-master",
    "symfony/assetic-bundle": "2.3.*",
    "symfony/swiftmailer-bundle": "2.2.*",
    "symfony/monolog-bundle": "2.2.*",
    "sensio/distribution-bundle": "2.2.*",
    "sensio/framework-extra-bundle": "2.2.*",
    "sensio/generator-bundle": "v2.3.3",
    "jms/security-extra-bundle": "1.4.*",
    "jms/di-extra-bundle": "1.3.*",
    "friendsofsymfony/user-bundle": "*",
    "friendsofsymfony/elastica-bundle": "2.1.*@dev",
    "sonata-project/cache-bundle": "dev-master",
    "sonata-project/block-bundle": "dev-master",
    "sonata-project/jquery-bundle": "1.8.*",
    "sonata-project/exporter" : "1.*",
    "knplabs/knp-menu":"1.1.*",
    "knplabs/knp-menu-bundle":"1.1.*",
    "sonata-project/admin-bundle": "dev-master#da071a913b86619fdd35449713a53ffd4cde1f61",
    "sonata-project/doctrine-orm-admin-bundle": "dev-master",
    "sonata-project/intl-bundle": "dev-master",
    "sonata-project/user-bundle": "dev-master",
    "sonata-project/media-bundle": "dev-master",
    "sonata-project/notification-bundle": "dev-master",
    "sonata-project/easy-extends-bundle": "dev-master",
    "stfalcon/tinymce-bundle": "v0.3.0",
    "stof/doctrine-extensions-bundle": "~1.1@dev",
    "a2lix/translation-form-bundle": "0.*@dev",
    "genemu/form-bundle": "2.1.*",
    "friendsofsymfony/jsrouting-bundle": "~1.1",
    "ibrows/newsletter-bundle": "dev-master",
    "elao/web-profiler-extra-bundle" : "dev-master",
    "leafo/lessphp": "dev-master",
    "raulfraile/ladybug-bundle": "~1.0",
    "jms/serializer-bundle": ">=0.11,<0.13-dev",
    "friendsofsymfony/comment-bundle": "v2.0.5",
    "pasinter/admanager-bundle": "dev-master",
    "liip/imagine-bundle": "dev-master"
},

為了確保我們使用的是相同版本,我只為Sonata管理員捆綁包強制進行了特定的提交。 我建議您在實現有效版本后,從配置中刪除#da071a913b86619fdd35449713a53ffd4cde1f61字符串。

配置文件

sonata_user:
    security_acl:     false
    class:
        user:         Application\Sonata\UserBundle\Entity\User
        group:        Application\Sonata\UserBundle\Entity\Group

    profile:  # Profile Form (firstname, lastname, etc ...)
        form:
            type:               sonata_user_profile
            handler:            sonata.user.profile.form.handler.default
            name:               sonata_user_profile_form
            validation_groups:  [Profile]

sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list:
            contexts:   [admin]
        sonata.admin.block.search_result:
            contexts:   [admin]

        sonata.block.service.text:
        sonata.block.service.action:
        sonata.block.service.rss:

sonata_admin:
    title:      Admin Panel
    title_logo: /bundles/sonataadmin/logo_title.png
    templates:
        # default global templates
        layout:  AcmeAdminBundle:Default:standard_layout.html.twig
        ajax:    SonataAdminBundle::ajax_layout.html.twig

        # default actions templates, should extend a global templates
        list:    SonataAdminBundle:CRUD:list.html.twig
        show:    SonataAdminBundle:CRUD:show.html.twig
        edit:    SonataAdminBundle:CRUD:edit.html.twig

        # search
        search:              SonataAdminBundle:Core:search.html.twig
        search_result_block: SonataAdminBundle:Block:block_search_result.html.twig
    dashboard:
        blocks:
            # display a dashboard block
            - { position: left, type: sonata.admin.block.admin_list }

sonata_doctrine_orm_admin:
    # default value is null, so doctrine uses the value defined in the configuration
    entity_manager: ~

    templates:
        form:
            - SonataDoctrineORMAdminBundle:Form:form_admin_fields.html.twig
        filter:
            - SonataDoctrineORMAdminBundle:Form:filter_admin_fields.html.twig
        types:
            list:
                array:      SonataAdminBundle:CRUD:list_array.html.twig
                boolean:    SonataAdminBundle:CRUD:list_boolean.html.twig
                date:       SonataAdminBundle:CRUD:list_date.html.twig
                time:       SonataAdminBundle:CRUD:list_time.html.twig
                datetime:   SonataAdminBundle:CRUD:list_datetime.html.twig
                text:       SonataAdminBundle:CRUD:base_list_field.html.twig
                trans:      SonataAdminBundle:CRUD:list_trans.html.twig
                string:     SonataAdminBundle:CRUD:base_list_field.html.twig
                smallint:   SonataAdminBundle:CRUD:base_list_field.html.twig
                bigint:     SonataAdminBundle:CRUD:base_list_field.html.twig
                integer:    SonataAdminBundle:CRUD:base_list_field.html.twig
                decimal:    SonataAdminBundle:CRUD:base_list_field.html.twig
                identifier: SonataAdminBundle:CRUD:base_list_field.html.twig

            show:
                array:      SonataAdminBundle:CRUD:show_array.html.twig
                boolean:    SonataAdminBundle:CRUD:show_boolean.html.twig
                date:       SonataAdminBundle:CRUD:show_date.html.twig
                time:       SonataAdminBundle:CRUD:show_time.html.twig
                datetime:   SonataAdminBundle:CRUD:show_datetime.html.twig
                text:       SonataAdminBundle:CRUD:base_show_field.html.twig
                trans:      SonataAdminBundle:CRUD:show_trans.html.twig
                string:     SonataAdminBundle:CRUD:base_show_field.html.twig
                smallint:   SonataAdminBundle:CRUD:base_show_field.html.twig
                bigint:     SonataAdminBundle:CRUD:base_show_field.html.twig
                integer:    SonataAdminBundle:CRUD:base_show_field.html.twig
                decimal:    SonataAdminBundle:CRUD:base_show_field.html.twig

這里是官方文檔: http : //sonata-project.org/bundles/admin/master/doc/reference/search.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM