奏鸣曲管理员:如何从仪表板删除“添加新的”按钮?
我使用Symfony 2.7与Sonata Admin Bundle来管理一些产品和产品图像。我使用了Sonata Admin Cookbook配方:https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html用于图像。奏鸣曲管理员:如何从仪表板删除“添加新的”按钮?
由于图像必须有与之关联的产品ID,因此我想要禁用Sonata管理仪表板和顶部工具栏中的“添加新图像”链接,以便任何上传的图像都具有关联的产品。实际上,图片应该被允许添加的唯一地方是产品添加/编辑页面。
我试图删除这样的路线,根据这里找到一些答案:Sonata Admin Dashboard: configure actions per entity
protected function configureRoutes(RouteCollection $collection)
{
$container = $this->getConfigurationPool()->getContainer();
if ($container->get('request')->get('_route') == 'sonata_admin_dashboard') {
$collection->remove('create');
}
}
但这种方法并不好,因为,如果缓存被初始化,当我访问管理控制台,路线在任何地方都会被移除,但如果缓存在不同的页面上初始化,那么路由将出现在所有页面上,包括仪表板,因为如果显示链接时路由存在,则Sonata Admin会在模板中进行验证。
所以,我需要路线存在,并删除链接。这可以使用配置完成,或者我必须重写模板?
在您定义管理员的奏鸣曲管理配置中,删除“组”标签。它看起来像这样。
services:
sonata.admin.images:
class: AppBundle\Admin\ImageAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Manage images" }
arguments:
...
(删除group: "Content"
或任何你有你的组设置)
这将会把你的形象管理中所谓的“默认”一个单独的块。
然后,明确定义你看仪表盘上的哪个块,而忽略了“默认”:
sonata_admin:
dashboard:
groups:
Content: ~
AnotherGroup: ~
在您的管理类:
use Sonata\AdminBundle\Route\RouteCollection;
protected function configureRoutes(RouteCollection $collection)
{
$collection->remove('create');
}
您也可以删除删除,显示等。 ..
检查:https://sonata-project.org/bundles/admin/master/doc/reference/routing.html#removing-a-single-route
这将删除'add' /'create'按钮。 –
我不明白你的意见 –
试试这个我管理员类别:
public function getDashboardActions() {
$actions = parent::getDashboardActions();
unset($actions['create']);
return $actions;
}
这应该被标记为正确的答案。 – user1970395
谢谢你的时间回答我的问题。事实上,这是一种从我的仪表板中删除“添加新的”链接的方法,但它也会删除“列表”链接,我希望列表可以访问。此外,这不会删除顶部工具栏中的链接。 –