4

私はプロジェクトを持っており、バックエンドにsymfony 2を使用しています。より多くの機能のためにそれらを拡張するためにSonataAdminBundlea をオーバーライドするにはどうすればよいですか?dashboardAction()

4

1 に答える 1

8

このソナタ管理者のルーティング構成は、次の場所にあります。

// vendor/bundles/Sonata/AdminBundle/Resources/config/routing/sonata_admin.xml
    <route id="sonata_admin_dashboard" pattern="/dashboard">
        <default key="_controller">SonataAdminBundle:Core:dashboard</default>
    </route>

DashboardActionsを拡張するコントローラーを保持する「My/AdminBundle」という名前のバンドルがあるとします。次に、次のことを試してください。

  1. /My/AdminBundle/Controller/CoreController.phpにコントローラーを作成します

    namespace My\AdminBundle\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
    use Symfony\Component\HttpFoundation\Response;
    use Sonata\AdminBundle\Controller\CoreController as BaseCoreContBroller;
    
    class CoreController extends BaseCoreContBroller
    {
    
        public function dashboardAction()
        {
            // your custom code
    
            // call parent method
            parent::dashboardAction();
        }
    }
    
  2. /My/AdminBundle/Resources/config/routing.ymlにあるバンドルルーティング構成ファイルを開きます(xmlなどの異なる構成形式がある場合があります)

sonata_admin_dashboard:
     パターン:/ dashboard
     デフォルト:{_controller:MyAdminBundle:Core:dashboard}
  1. アプリケーションルーティング構成ファイルを開き、ソナタ構成の後に以下を追加して、それをオーバーライドするようにします
管理者:
    リソース:'@SonataAdminBundle / Resources / config / routing / sonata_admin.xml'
    プレフィックス:/ admin

_sonata_admin:
    資源: 。
    タイプ:sonata_admin
    プレフィックス:/ admin

MyAdminBundle:
    リソース: "@ MyAdminBundle / Resources / config / routing.yml"
    プレフィックス:/ admin

免責事項は、私がプロジェクトでこれを使用したことがないことを知っているためです。私はそれをローカルでチェックするだけで、うまくいきました。これが最善の解決策ではない可能性があります。

お役に立てれば

于 2012-01-04T22:34:40.903 に答える