Php SonataAdminBundle中的自定义操作
在此基础上,我找到了如何为自定义操作添加路由Php SonataAdminBundle中的自定义操作,php,symfony,symfony-sonata,sonata-admin,Php,Symfony,Symfony Sonata,Sonata Admin,在此基础上,我找到了如何为自定义操作添加路由 protected function configureRoutes(RouteCollection $collection) { $collection->add('ispremium', $this->getRouterIdParameter().'/ispremium'); } 之后,我在Admin类中添加自定义操作: protected function configureListFields(ListMapper $
protected function configureRoutes(RouteCollection $collection) {
$collection->add('ispremium', $this->getRouterIdParameter().'/ispremium');
}
之后,我在Admin类中添加自定义操作:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('code', null, array('label' => 'Code'))
->add('_action', 'actions', array(
'actions' => array(
'ispremium' => array(
'template' => 'AppMyBundleBundle:Admin:ispremium.html.twig'
)
)
))
;
}
它生成的url如下所示:
/app_dev.php/admin/mobispot/discodes/discode/300876/ispremium
此链接的我的模板:
<a href="{{ admin.generateObjectUrl('ispremium', object) }}">Link</a>
我不知道如何解决这个问题:
为
EntityAdmin
类创建服务时,第三个参数是控制器名称。您可以创建一个扩展CRUDController
的类,并将其设置为服务。e、 g
控制员
//Vendor\YourBundle\Controller\EntityAdminController.php
class EntityAdminController extends CRUDController
{
public function ispremiumAction()
{
//process
}
}
在services.yml
中
entity.admin.service:
class: FQCN\Of\EntityAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: your_group, label: Label }
arguments: [null, FQCN\Of\Entity, VendorYourBundle:EntityAdmin]
非常感谢!另外,我在symfony2.0中是noob,刚刚发现,我还可以在$collection->add方法中设置_controller