Sonata用户捆绑包自定义批量操作

时间:2017-01-03 09:11:52

标签: php symfony sonata-admin sonata sonata-user-bundle

正如标题所示,我需要向SonataUserBundle添加自定义批处理操作。

通过此操作,操作员可以向所有用户(或所选用户)发送消息。因此,需要扩展SonataAdminBundle才能为此操作添加自定义视图。

问题是,ApplicationSonataUserBundle.php覆盖了SonataUserBundle

class ApplicationSonataUserBundle extends Bundle
{
    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return 'SonataUserBundle';
    }
}

如果我改变它,它将破坏Bundle。

我是否可以将此批处理操作添加到捆绑包中?

1 个答案:

答案 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()));
   }
}

希望它会帮助某人:)