我在我的项目供应商中有捆绑。必要时覆盖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
{
// ...
}
Overwrited 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 }
我做错了什么?
答案 0 :(得分:0)
几种选择。
检查路线的设置位置。可能在某处的routes.yml文件中。调整路线以指向您的控制器。
如果第1步不可行,请尝试捆绑继承:http://symfony.com/doc/current/cookbook/bundles/inheritance.html
如果这些方法都不起作用,那么我们可能需要更多细节。可能还会检查软件包文档中的提示。控制器也可能发送事件,这反过来可能意味着您根本不必覆盖它们。
答案 1 :(得分: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;
所有作品