gpt4 book ai didi

php - SonataAdminBundle 中的自定义操作

转载 作者:可可西里 更新时间:2023-11-01 12:23:57 25 4
gpt4 key购买 nike

在此page我找到了如何为我的自定义操作添加路由。

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>

我不知道如何解决这个问题:

  1. 如何为该路由 channel 定义自定义 Controller ?现在我有一个错误:

    方法“Sonata\AdminBundle\Controller\CRUDController::ispremiumAction”不存在。

  2. 我可以使用 generateUrl 方法更改生成的 url 吗?

最佳答案

当您为 EntityAdmin 类创建服务时,第三个参数是 Controller 名称。您可以创建一个扩展 CRUDController 的类并将其设置为服务。例如

Controller ,

//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]

关于php - SonataAdminBundle 中的自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com