Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SonataAdminBundle中的自定义操作_Php_Symfony_Symfony Sonata_Sonata Admin - Fatal编程技术网

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>

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

  • 如何为该路线通行证定义自定义控制器? 现在我有一个错误:

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

  • 我可以用generateUrl方法更改生成的url吗


  • 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