2015-09-28 20 views
6

Tôi đang sử dụng Symfony 2.7 với Gói quản trị Sonata để quản lý một số sản phẩm và hình ảnh sản phẩm. Tôi đã sử dụng công thức Sonata Admin Cookbook: https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html cho hình ảnh.Sonata Admin: Làm thế nào để loại bỏ "Thêm mới" nút từ bảng điều khiển chỉ?

Vì hình ảnh phải có id sản phẩm được liên kết với nó, tôi muốn vô hiệu hóa liên kết "Thêm mới" từ bảng điều khiển quản trị Sonata và từ thanh công cụ trên cùng, vì vậy mọi hình ảnh được tải lên sẽ có một sản phẩm liên quan. Trên thực tế, nơi duy nhất cho phép thêm hình ảnh vào trang thêm/chỉnh sửa sản phẩm.

tôi đã cố gắng để loại bỏ các tuyến đường như thế này, theo một số câu trả lời tìm thấy ở đây: 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'); 
    } 
} 

Nhưng giải pháp này là không tốt, bởi vì, nếu bộ nhớ cache được khởi tạo khi tôi truy cập vào bảng điều khiển quản trị , tuyến đường sẽ bị xóa ở mọi nơi, nhưng nếu bộ nhớ cache được khởi tạo trên một trang khác thì tuyến đường sẽ xuất hiện trên tất cả các trang, bao gồm trang tổng quan, vì Quản trị viên Sonata xác thực trong các mẫu nếu tuyến đường tồn tại khi hiển thị liên kết.

Vì vậy, tôi cần lộ trình tồn tại và xóa liên kết. Điều này có thể được thực hiện bằng cách sử dụng cấu hình hoặc tôi phải viết lại các mẫu?

Trả lời

0

Trong cấu hình quản trị sonata của bạn nơi bạn xác định quản trị viên của mình, hãy xóa thẻ "nhóm". Nó trông như thế này

services: 
    sonata.admin.images: 
     class: AppBundle\Admin\ImageAdmin 
     tags: 
      - { name: sonata.admin, manager_type: orm, group: "Content", label: "Manage images" } 
     arguments: 
      ... 

(loại bỏ group: "Content" hoặc bất cứ điều gì bạn đã nhóm bạn thiết lập như là)

Điều này sẽ đặt quản trị hình ảnh của bạn trong một khối riêng biệt gọi là "mặc định".

Sau đó, một cách rõ ràng xác định mà khối bạn hiển thị trên bảng điều khiển, rời ra "mặc định":

sonata_admin: 
    dashboard: 
     groups: 
      Content: ~ 
      AnotherGroup: ~ 
+0

Cảm ơn bạn đã dành thời gian trả lời câu hỏi của mình. Thật vậy, đây là một phương pháp để loại bỏ liên kết "Thêm mới" khỏi trang tổng quan của tôi, nhưng nó cũng sẽ xóa liên kết "Danh sách" và tôi muốn danh sách có thể truy cập được. Hơn nữa, điều này không loại bỏ liên kết trong thanh công cụ trên cùng. –

3

Hãy thử điều này i n lớp quản trị:

public function getDashboardActions() { 
    $actions = parent::getDashboardActions(); 
    unset($actions['create']); 
    return $actions; 
} 
+0

Điều này sẽ được đánh dấu là câu trả lời đúng. – user1970395

Các vấn đề liên quan