Helpex - Trao đổi & giúp đỡ Đăng nhập
3

Như bạn đã biết, tất cả các tạo vật của Đức Chúa Trời đều khác nhau . Chúng phù hợp nhất với cơ sở dữ liệu không quan hệ như. Giả sử tôi có một ZooCollecionvới các AnimalĐối tượng Tài liệu khác nhau .

Làm thế nào tôi có thể sử dụng , để thay đổi lớp tài liệu bằng menu chọn "loại" đơn giản (hoặc thứ gì đó liên quan)?

Quản trị viên Sonata: Sử dụng nhiều lớp (loại) tài liệu

Acme/DemoBundle/Resources/config/services.yml

services:
    animal.admin.page:
        class: %animal.admin.class%
        arguments: [null, %animal.class%, null] # Is this the key ?
        calls:
            - [ setContainer, [ @service_container ] ]
        tags:
            - { name: sonata.admin, manager_type: doctrine_mongodb, group: Zoo, label: Animals }

Động vật - Acme/DemoBundle/Document/Animal( tài liệu cơ sở ):

/**
 * Class representing Animals
 *
 * @MongoDB\Document(collection="zoo_animals", 
 *  repositoryClass="Acme\DemoBundle\Repository\ZooRepository")
 */
class Animal
{
    /**
     * @MongoDB\Id(strategy="auto")
     */
    protected $id;

    /**
     * @MongoDB\Hash
     * @Assert\NotBlank(message="Type type should not be blank.")
     */
    protected $type;

    ...
}

Quản trị viên Sonata: Sử dụng nhiều lớp (loại) tài liệuCon voi - Acme/DemoBundle/Document/Elephant( mở rộng tài liệu cơ sở ):

/**
 * Class representing Elephants
 */
class Elephant extends Animal
{
    ...
}

Quản trị viên Sonata: Sử dụng nhiều lớp (loại) tài liệuTurtle - Acme/DemoBundle/Document/Turtle( mở rộng tài liệu cơ sở ):

/**
 * Class representing Turtles
 */
class Turtle extends Animal
{
    ...
}
3 hữu ích 0 bình luận 658 xem chia sẻ
2

Một ví dụ điển hình về kiểu triển khai đó trong quản trị viên sẽ là quản trị viên tạo sản phẩm trong thương mại điện tử sonata (xem createAction trong ProductAdminController: https://github.com/sonata-project/ecommerce/blob/master/src/ProductBundle/ Controller / ProductAdminController.php ).

Về cơ bản những gì chúng tôi đã làm là ghi đè AdminController thông qua định nghĩa dịch vụ (xem https://github.com/sonata-project/ecommerce/blob/master/src/ProductBundle/Resources/config/admin.xml ), cho phép chúng tôi ghi đè Hành động createA bắt đầu với một lựa chọn kiểu, và sau đó chỉnh sửa biểu mẫu theo đối số này (ở đây nó không phải là một kiểu nói, mà là một nhà cung cấp sản phẩm; nhưng về cơ bản đây là điều tương tự).

2 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ php mongodb symfony sonata-admin symfony-sonata , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading