Sonata Admin搜索功能

The*_*kel 7 php symfony sonata-admin

我最近更新了我的symfony2项目供应商.因此我得到了最新的Sonata Admin Bundle版本(从2.2.5更新到2.2.6).

我看到此版本中有一个新的搜索功能,但我无法让它工作.我无法弄清楚我做错了什么.让我发狂.

这是我的composer.json要求:

    "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.*"
},
Run Code Online (Sandbox Code Playgroud)

在更新后,我有搜索功能抱怨一个不存在的块:

在SonataAdminBundle中呈现模板("块类型sonata.admin.block.search_result不存在")期间抛出异常:核心:第48行的search.html.twig

我通过在我的声明块中更正了这个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:
Run Code Online (Sandbox Code Playgroud)

但现在,它抱怨未设置请求:

在SonataAdminBundle:Core:search.html.twig第48行渲染模板期间抛出异常("请求对象尚未设置")

我真的不明白我在这里缺少什么.任何帮助将非常感激.

Bab*_*aga 20

在sonata块配置中添加块:

sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list: #default sonata admin block
            contexts: [admin]
        sonata.admin.block.search_result:
            contexts: [admin]
Run Code Online (Sandbox Code Playgroud)


use*_*564 7

我得到了同样的错误.这可能是因为您在管理员中使用了请求.

$this->getRequest()->get('context', 'default')
Run Code Online (Sandbox Code Playgroud)

如果您尝试获取请求,搜索不会设置请求,管理员会触发异常.

在我的管理员中,我使用函数来访问请求参数并避免异常.

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