Sonata User Bundle 自定义批处理操作
Posted
技术标签:
【中文标题】Sonata User Bundle 自定义批处理操作【英文标题】:Sonata User Bundle custom batch action 【发布时间】:2017-05-17 08:04:00 【问题描述】:正如标题所示,我需要将自定义批处理操作添加到SonataUserBundle
。
通过此操作,操作员可以向所有用户(或选定用户)发送消息。因此它需要扩展 SonataAdminBundle
以便能够为此操作添加自定义视图。
问题是,ApplicationSonataUserBundle.php
覆盖了SonataUserBundle
:
class ApplicationSonataUserBundle extends Bundle
/**
* @inheritdoc
*/
public function getParent()
return 'SonataUserBundle';
如果我更改它,它将破坏捆绑包。
是否有任何解决方案可以将此批处理操作添加到捆绑包中?
【问题讨论】:
> 因此它需要扩展 SonataAdminBundle 以便能够为此操作添加自定义视图。你确定吗?我看不到逻辑链接是什么。 是的,除非它显示Action... is not callable
如果你看到这条消息,你只需要创建动作,就像任何其他 Symfony 动作一样。
是的,我之前在其他捆绑包中这样做过,但它不适用于用户捆绑包
您从控制器启动批处理操作?为什么不使用命令?
【参考方案1】:
您需要编辑 sonata_user 配置以使用您自己的控制器而不是默认的 Sonata Admin CRUD 控制器。
所以在你的 config.yml 中添加以下内容:
sonata_user:
admin:
user:
controller: MyAppMyBundle:UserAdmin
并创建您自己的扩展 CRUDController 的控制器
namespace MyApp\MyBundle\Controller;
use Sonata\AdminBundle\Controller\CRUDController as Controller;
class UserAdminController extends Controller
现在您可以像这样添加自己的批处理操作
class UserAdminController extends Controller
public function batchActionSendMail(ProxyQueryInterface $selectedModelQuery)
$selectedModels = $selectedModelQuery->execute();
// Your stuff here
return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
希望对某人有所帮助:)
【讨论】:
以上是关于Sonata User Bundle 自定义批处理操作的主要内容,如果未能解决你的问题,请参考以下文章
Sonata Admin Bundle - 表单类型:sonata_type_collection - 自定义模板?
Symfony2 Sonata Media Bundle 自定义图像裁剪