正如标题所示,我需要向SonataUserBundle
添加自定义批处理操作。
通过此操作,操作员可以向所有用户(或所选用户)发送消息。因此,需要扩展SonataAdminBundle
才能为此操作添加自定义视图。
问题是,ApplicationSonataUserBundle.php
覆盖了SonataUserBundle
:
class ApplicationSonataUserBundle extends Bundle
{
/**
* {@inheritdoc}
*/
public function getParent()
{
return 'SonataUserBundle';
}
}
如果我改变它,它将破坏Bundle。
我是否可以将此批处理操作添加到捆绑包中?
答案 0 :(得分:0)
您需要的是编辑sonata_user配置以使用您自己的Controller而不是默认的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()));
}
}
希望它会帮助某人:)