[英]Sonata Admin search feature
I recently updated my symfony2 project vendors. 我最近更新了我的symfony2项目供应商。 Thus I got latest Sonata Admin Bundle version (updated from 2.2.5 to 2.2.6).
因此,我得到了最新的Sonata Admin Bundle版本(从2.2.5更新到2.2.6)。
I saw there is a new search feature in this release but I can't get it work. 我看到此版本中有一个新的搜索功能,但无法正常使用。 I can't figure out what I'm doing wrong.
我不知道我在做什么错。 Drives me crazy.
让我发狂。
Here is my composer.json require : 这是我的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.*"
},
Right after the update I had the search feature complaining about a non existing block : 在更新之后,我立即拥有搜索功能,抱怨一个不存在的块:
An exception has been thrown during the rendering of a template ("The block type sonata.admin.block.search_result does not exist") in SonataAdminBundle:Core:search.html.twig at line 48
在第48行的SonataAdminBundle:Core:search.html.twig中的模板渲染过程中引发了异常(“块类型sonata.admin.block.search_result不存在”)。
I corrected this one by declaring the block in my config.yml
: 我通过在
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:
But now, it is complaining about request not set : 但是现在,它抱怨没有设置请求:
An exception has been thrown during the rendering of a template ("The Request object has not been set") in SonataAdminBundle:Core:search.html.twig at line 48
在第48行的SonataAdminBundle:Core:search.html.twig中呈现模板(“尚未设置Request对象”)的过程中引发了异常。
I really don't understand what I'm missing here. 我真的不明白我在这里想念的是什么。 Any help would be much appreciated.
任何帮助将非常感激。
Add the block in your sonata block config: 在奏鸣曲块配置中添加该块:
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list: #default sonata admin block
contexts: [admin]
sonata.admin.block.search_result:
contexts: [admin]
I got the same error. 我遇到了同样的错误。 It's probably because you are using the Request in an Admin.
可能是因为您在管理员中使用了“请求”。
$this->getRequest()->get('context', 'default')
The search does not set the request and the Admin triggers an exception if you are trying to get the request. 搜索不会设置请求,并且如果您尝试获取请求,则管理员会触发异常。
In my Admin, I am using a function to access the request parameter and avoid an exception. 在我的管理员中,我正在使用一个函数来访问请求参数并避免异常。
public function getRequestParameterOrNull( $key, $default = null ){
try{
return $this->getRequest()->get($key, $default);
}catch(\Exception $e){
return null;
}
}
Find below the full configuration: 在下面找到完整的配置:
composer.json 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"
},
I've just forced a specific commit for the sonata admin bundle, just to be sure that we are using the same version. 为了确保我们使用的是相同版本,我只为Sonata管理员捆绑包强制进行了特定的提交。 I suggest to you to remove the
#da071a913b86619fdd35449713a53ffd4cde1f61
string from the configuration after the achievement of a working release. 我建议您在实现有效版本后,从配置中删除
#da071a913b86619fdd35449713a53ffd4cde1f61
字符串。
config.yml 配置文件
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
Here the official documentation: http://sonata-project.org/bundles/admin/master/doc/reference/search.html 这里是官方文档: http : //sonata-project.org/bundles/admin/master/doc/reference/search.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.