[英]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.