0

プロジェクト ベンダーにバンドルされています。必要に応じて EditController クラスを上書きします。CedricLambardot AdminGeneratorBundle を使用してベンダー バンドルをビルドします。*-generator.yml を上書きし、params.bundle_name 名をベンダ バンドルに指定しました。Owerrite コントローラーも、彼は動作しません。ベンダーのコントローラーを使用するすべて同じ symfony です。

ベンダーからの EditController.php:

namespace Acme\ProductBundle\Controller\Product;

use Admingenerated\AcmeProductBundle\BaseProductController\EditController as BaseEditController;
// ...

class EditController extends BaseEditController
{
    // ...
}

上書きされた EditController.php

namespace Acme\AnniProductBundle\Controller\Product;

use Acme\ProductBundle\Controller\Product\EditController as BaseEditController;
// ...

class EditController extends BaseEditController
{
    // ...
}

上書きされた *-generator.yml:

generator: admingenerator.generator.doctrine_odm
params:
  model: Acme\AnniProductBundle\Document\Product
  namespace_prefix: Acme
  bundle_name: ProductBundle
  object_actions:
        delete: ~
  fields:
    name:
      label: Name
    # ...
  # ...

私のルート:

Acme_ProductBundle_Product_list:
    path:      /product/
    defaults:  { _controller: AcmeAnniProductBundle:Product\List:index }

Acme_ProductBundle_Product_filters:
    path:      /product/filter
    defaults:  { _controller: AcmeAnniProductBundle:Product\List:filter }

Acme_ProductBundle_Product_edit:
    path:      /product/{pk}/edit
    defaults:  { _controller: AcmeAnniProductBundle:Product\Edit:index }

Acme_ProductBundle_Product_update:
    path:      /product/{pk}/update
    defaults:  { _controller: AcmeAnniProductBundle:Product\Edit:update }

Acme_ProductBundle_Product_object:
    path:      /product/{pk}/{action}
    defaults:  { _controller: AcmeAnniProductBundle:Product\Actions:object }

Acme_ProductBundle_Product_new:
    path:      /product/new
    defaults:  { _controller: AcmeAnniProductBundle:Product\New:index }

Acme_ProductBundle_Product_create:
    path:      /product/create
    defaults:  { _controller: AcmeAnniProductBundle:Product\New:create }

私は何を間違っていますか?

4

2 に答える 2

0

いくつかのオプション。

  1. ルートが設定されている場所を確認します。おそらくどこかの routes.yml ファイルにあります。コントローラーを指すようにルートを調整します。

  2. ステップ 1 が実行できない場合は、バンドルの継承を試してください: http://symfony.com/doc/current/cookbook/bundles/inheritance.html

これらのアプローチのどちらも機能しない場合は、おそらくさらに詳細が必要になります。バンドルのドキュメントでヒントを確認することもできます。また、コントローラーがイベントを送信している可能性もあります。これは、それらをオーバーライドする必要がまったくないことを意味する場合があります。

于 2013-08-16T13:24:33.717 に答える
0

注釈の問題:

親コントローラー:

namespace Acme\ProductBundle\Controller\Product;

use Admingenerated\AcmeProductBundle\BaseProductController\EditController as     BaseEditController;
use JMS\DiExtraBundle\Annotation as DI;
// ...

class EditController extends BaseEditController
{
    /** @DI\Inject("doctrine_mongodb.odm.document_manager") */
    private $dm;

    // ...
}

上書きされたコントローラーの場合は、次のように書き込みます。

/** @DI\Inject("doctrine_mongodb.odm.document_manager") */
private $dm;

全作品

于 2013-08-22T08:26:02.177 に答える