简体   繁体   中英

Sonata admin custom list action calls wrong method

As the name suggests, sonata admin custom list actions calls the wrong method.

There are two admin classes

  • AppleIdAdmin
  • ITunesGiftCardAdmin

there are two other controllers:

  • PrintController
  • SMSController

each admin classes are able to send sms and print the object using two different methods created in each controller,

  • smsAppleIdAction
  • smsITunesAction
  • printAppleIdAction
  • printITunesAction

here is my service.yml :

services:
    administration_product_product.admin.apple_id:
        class: Administration\Product\ProductBundle\Admin\AppleIdAdmin
        arguments: [~, Administration\Product\ProductBundle\Entity\AppleId, SonataAdminBundle:CRUD]
        tags:
            - {name: sonata.admin, manager_type: orm, group: Gift Cards, label: Apple ID}

    administration_product_product.admin.sms_appleid:
        class: Administration\Product\ProductBundle\Admin\AppleIdAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: admin, label: Apple ID }
        arguments:
            - null
            - Administration\Product\ProductBundle\Entity\AppleId
            - AdministrationProductProductBundle:SMS

    administration_product_product.admin.print_appleid:
        class: Administration\Product\ProductBundle\Admin\AppleIdAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: admin, label: Apple ID }
        arguments:
            - null
            - Administration\Product\ProductBundle\Entity\AppleId
            - AdministrationProductProductBundle:Print

    administration_product_product.admin.i_tunes_gift_card:
        class: Administration\Product\ProductBundle\Admin\ITunesGiftCardAdmin
        arguments: [~, Administration\Product\ProductBundle\Entity\ITunesGiftCard, SonataAdminBundle:CRUD]
        tags:
            - { name: sonata.admin, manager_type: orm, group: Gift Cards, label: iTunes Gift Card }

    administration_product_product.admin.print_itunes:
        class: Administration\Product\ProductBundle\Admin\ITunesGiftCardAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: admin, label: iTunes Gift Card }
        arguments:
            - null
            - Administration\Product\ProductBundle\Entity\ITunesGiftCard
            - AdministrationProductProductBundle:Print
administration_product_product.admin.sms_itunes:
    class: Administration\Product\ProductBundle\Admin\ITunesGiftCardAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, group: admin, label: iTunes Gift Card }
    arguments:
        - null
        - Administration\Product\ProductBundle\Entity\ITunesGiftCard
        - AdministrationProductProductBundle:SMS

The weird thing is that, when sending apple id via sms (printing is ok!) i'm getting this error:

Controller "Administration\Product\ProductBundle\Controller\PrintController::smsAppleIdAction" for URI "/admin/product/product/appleid/smsAppleId" is not callable.

and when printing iTunes card (sms is ok!) this error shows:

Controller "Administration\Product\ProductBundle\Controller\SMSController::printITunesAction" for URI "/admin/product/product/itunesgiftcard/printITunes" is not callable.

Also all list_action twig files are ok and they call the correct action.

Well, the solution was to use a controller for each admin, and use sms and print method in this controller. Don't know why, but it could help someone... one day :)

so now, I have AppleIdContoller , ITunesContoller , and each of these controller contain the appropriate smsAction and printAction

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM