我的symfony/sonata应用程序中有一个实体,它没有通过doctrine orm持久化。相反,我想通过调用 api 按需填充这些实体的数据......如何将此自定义托管实体与由 doctrine orm 管理的现有模型连接起来?有没有办法将原则管理部分与我的自定义 api 调用交换?我知道有一些存储库函数,如 findAll(( findBy(( 等等......是覆盖此功能的解决方案吗?
另一种方法?
谢谢
我有一个类似的用例。我最终得到了一个大致如下的解决方案。
1( 创建自定义模型管理器类。就我而言,我扩展了为教义(SonataDoctrineORMAdminBundleModelModelManager
(提供的教义,但您也可以直接实现SonataAdminBundleModelModelManagerInterface
。覆盖您需要更改的方法(例如 create()
、update()
、delete()
(。
# MyCustomModelManager.php
namespace AppBundleAdmin;
use SonataDoctrineORMAdminBundleModelModelManager;
class MyCustomModelManager extends ModelManager {
public function create($object){ // Your custom implementation }
public function create($object){ // Your custom implementation }
public function create($object){ // Your custom implementation }
}
2( 将新的模型管理器注册为服务(如果您将 Symfony 3.3 与默认容器配置一起使用,则不需要,其中包括将类自动配置为服务(
# services.yml
...
AppBundleAdminMyCustomModelManager:
arguments: [ '@doctrine' ]
...
3( 将管理员类配置为使用自定义模型管理器,例如:
app.admin.myadmin:
class: AppBundleAdminMyAdmin
tags:
- { name: sonata.admin, manager_type: orm }
arguments: [~, AppBundleEntityMyEntity, ~]
calls:
- [ setModelManager, [ '@AppBundleAdminMyCustomModelManager' ]]
希望对:)有所帮助