php - 索纳塔管理员 : How to remove "Add New" button from dashboard only?

标签 php symfony configuration-files sonata-admin dashboard

我正在使用 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 在显示链接时会在模板中验证路线是否存在。

所以,我需要路由存在并删除链接。这可以使用配置来完成还是我必须重写模板?

最佳答案

在您的管理类(class)中:

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

关于php - 索纳塔管理员 : How to remove "Add New" button from dashboard only?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821747/

相关文章:

php - 如何将 foreach 循环中的值存储到数组中?

php - 如何统计mysql中的唯一记录

php - 从 mysql 表加载的 php 代码不会在输出页面上解释

php - 学说 :generate:crud for Entites outside a bundle

php - Symfony 将 native sql 转换为查询生成器

php - symfony:如何处理实体类型的二级链接选择?

python - 在 Python 中处理配置文件

Python 记录到配置文件中初始化的 MemoryHandler

php - 是否有 Laravel 验证规则来检查字段是否为标量

Java相当于app.config?