Sonata Admin Search Feature

I recently updated my symfony2 project sellers. So I got the latest version of the Sonata Admin Bundle (updated from 2.2.5 to 2.2.6).

I saw that there is a new search feature in this release, but I can't get it to work. I cannot understand what I am doing wrong. It infuriates me.

Here is my composer .json requires:

"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 a search function complaining about a non-existent 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 

I fixed this by declaring a block in my 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 he complains that the request has not been 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 

I really don't understand what I'm missing here. Any help would be greatly appreciated.

+6
source share
3 answers

I got the same error. This is probably because you are using the request in admin.

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

The search does not set the request, and the administrator raises an exception if you try to receive the request.

In my Admin, I use a function to access the request parameter and throw an exception.

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

Add a block to the sonata block configuration:

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

Find the full configuration:

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 just made a specific commit for the sonata administration pack, just to make sure we use the same version. I suggest you remove the line #da071a913b86619fdd35449713a53ffd4cde1f61 from the configuration after reaching the working version.

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's the official documentation: http://sonata-project.org/bundles/admin/master/doc/reference/search.html

+1
source

Source: https://habr.com/ru/post/956592/


All Articles