扩展Sonata的PageAdmin时找不到自定义方法

问题描述 投票:0回答:1

我们使用Easy Extends扩展了Sonata的Page Admin。所以我现在有一个看起来像这样的类:

class PageAdmin extends BasePageAdmin
{
    public function configureRoutes(RouteCollection $collection)
    {
        parent::configureRoutes($collection);

        $collection->add( 'send_page_emails', '/admin/send-page-emails');
    }
    ...
}

...我的自定义PageAdminController类包括以下功能:

protected function sendPageEmailsAction()
{
    die('Here I am!');
}

当我尝试重定向到我的新操作时出现问题。我得到以下内容:

调用未定义的方法Sonata \ AdminBundle \ Controller \ CRUDController :: sendPageEmailsAction

如何让应用程序在正确的位置查找我的操作?

===

编辑:以下是admin.yml的相关部分。

sonata.page.admin.page:
    class: Application\Sonata\PageBundle\Admin\PageAdmin
    arguments: [~, '%sonata.page.admin.page.entity%', SonataPageBundle:PageAdmin]
    tags:
        - { name: sonata.admin, manager_type: orm, group: admin, label: Seiten }
    calls:
        - [ addChild, ['@sonata.page.admin.block']]
        - [ addChild, ['@sonata.page.admin.snapshot']]
        - [ setPageManager, ['@sonata.page.manager.page']]
        - [ setCacheManager, ['@sonata.cache.manager']]
        - [ setSiteManager, ['@sonata.page.manager.site']]
        - [ setTranslationDomain, ['SonataPageBundle']]
        - [ setTemplate, ['edit', 'ApplicationSonataPageBundle:PageAdmin:edit_duplicate.html.twig']]
        - [ setTemplate, ['tree', 'SonataPageBundle:PageAdmin:tree.html.twig']]
        - [ setTemplate, ['compose', 'ApplicationSonataPageBundle:PageAdmin:compose.html.twig']]
        - [ setTemplate, ['create', 'SonataAdminBundle:CRUD:edit.html.twig']]
        - [ setTemplate, ['select_site', 'SonataPageBundle:PageAdmin:select_site.html.twig']]
        - [ setTemplate, ['list', 'SonataPageBundle:PageAdmin:list.html.twig']]
        - [ setTemplate, ['compose_container_show', 'SonataPageBundle:PageAdmin:compose_container_show.html.twig']]
php symfony inheritance sonata
1个回答
1
投票

在管理控制器中,操作方法应该是公共的而不受保护,否则Sonata将无法找到您的操作方法:

<?php

namespace Application\Sonata\PageBundle\Controller;

use Sonata\AdminBundle\Controller\CRUDController;

class PageAdminController extends CRUDController
{
   public function sendPageEmailsAction()
   {
       // your code here
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.