我已经发布了3次,似乎看不到帖子不知道我做错了什么。
我创建了我的批处理操作,我的管理员课程如下:
namespace ACME\MyBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Route\RouteCollection;
class JournalistProfileAdmin extends Admin
{
...........
...........
public function getBatchActions()
{
$lists = $this->getModelManager()->createQuery('ACME\MyBundle\Entity\ContactList', 'c')->execute();
$listsArray = array();
foreach ($lists as $list)
{
$listsArray[$list->getId()] = $list->getName();
}
$actions = parent::getBatchActions();
$actions['addToGroup'] = array(
'label' => $this->trans('action_add_to_group', array(), 'SonataAdminBundle'),
'ask_confirmation' => true,
'secondary' => $listsArray,
);
return $actions;
}
}
然后扩展CRUDController,如下面的文件:
namespace ACME\MyBundle\Controller;
use Sonata\AdminBundle\Controller\CRUDController as Controller;
use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery as ProxyQueryInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
class JournalistProfileAdminController extends Controller
{
public function batchActionAddToIsRelevant()
{
return true;
}
public function batchActionAddToGroup(ProxyQueryInterface $selectedModelQuery)
{
........................
...........................
}
当我尝试运行我的批处理操作时,我得 Sonata \ AdminBundle \ Controller \ CRUDController :: batchActionAddToGroup方法必须创建错误。
有人可以帮忙吗?
答案 0 :(得分:4)
我想您忘记在服务声明中指定您的JournalistProfileAdminController。我刚遇到这个问题。服务声明应如下所示(在Services.yml中):
what.ever.JournalistProfileAdmin:
class: your\classpath\Admin\JournalistProfileAdmin
arguments: [ null, your\Bundle\Entity\JournalistProfile, 'YourBundle:Admin\JournalistProfileAdmin' ]
calls:
- [...]
tags:
- [...]
这里最后一个论点很重要。它不应该是SonataAdminBundle:CRUD但是YourBundle:JournalistProfileAdmin
你的问题已经很久了,但我希望有一天能帮助别人。
答案 1 :(得分:1)
好吧,在你的第二个代码片段中,你有一个batchActionGroup方法。这需要被称为batchActionAddToGroup(因为,在第一个代码段中,您正在调用新的批处理操作'添加到组' not' group')。我希望有帮助