相关疑难解决方法(0)

SonataAdminBundle中的自定义操作

在这个页面上,我找到了如何为自定义操作添加路由.

protected function configureRoutes(RouteCollection $collection) {
    $collection->add('ispremium', $this->getRouterIdParameter().'/ispremium'); 
}
Run Code Online (Sandbox Code Playgroud)

之后,我在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'
                )
            )
        ))
    ;
}
Run Code Online (Sandbox Code Playgroud)

它生成的URL如下:

/app_dev.php/admin/mobispot/discodes/discode/300876/ispremium
Run Code Online (Sandbox Code Playgroud)

我的链接模板:

<a href="{{ admin.generateObjectUrl('ispremium', object) }}">Link</a>
Run Code Online (Sandbox Code Playgroud)

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

  1. 如何为该路由传递定义自定义控制器?现在我有一个错误:

    方法"Sonata\AdminBundle\Controller\CRUDController :: ispremiumAction"不存在.

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

php symfony symfony-sonata sonata-admin

8
推荐指数
1
解决办法
1万
查看次数

在configureFormFields中使用SonataAdminBundle ACL

我在SonataAdminBundle中使用ACL时安装了SonataAdminBundle,SonataUserBundle和FOSUserBundle以及CoopTilleulsAclSonataAdminExtensionBundle.

所有者过滤列表,一切都很好.顾客A只能看到他的物品,顾客b也只能看到他的物品.但是,如果我要创建一个新对象,我也可以看到其他客户的项目.

让我们说客户可以创建用于分配产品的组.这是在将产品创建为下拉列表(产品视图中的多对一关系)时完成的.但我也可以看到由其他客户创建的群组.

我怎么过滤这个?我想我必须在ProductsAdmin.php中进行任何过滤.或者它必须发生在ProductsRepository.php中吗?到目前为止,我在文档中找不到任何提示,并且会在任何类型的提示或链接中找到我可以找到的信息.

symfony sonata-admin sonata

8
推荐指数
1
解决办法
191
查看次数

标签 统计

sonata-admin ×2

symfony ×2

php ×1

sonata ×1

symfony-sonata ×1