[英]custom action in SonataAdminBundle
在這個頁面上,我找到了如何為自定義操作添加路由。
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>
我不知道如何解決這個問題:
如何為該路由傳遞定義自定義控制器? 現在我有一個錯誤:
方法“Sonata \\ AdminBundle \\ Controller \\ CRUDController :: ispremiumAction”不存在。
我可以使用generateUrl方法更改生成的網址嗎?
在為EntityAdmin
類創建服務時,第三個參數是控制器名稱。 您可以創建一個擴展CRUDController
並將其設置為服務的類。 例如
控制器,
//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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.