Vấn đề của tôi là như sau. Tôi đang sử dụng Sonata Admin với Symfony. Trong phần Quản trị, khi tôi cố gắng tạo ra một thực thể, không có gì xuất hiện khi tôi bấm vào nút add (đánh vần là "Ajouter"):Tôi làm cách nào để thực hiện chỉnh sửa nội dòng bên trong quản trị viên lồng nhau?
tôi nhận được lỗi sau: Call to a member function getName() on a non-object
trong chrome console
sau đây là cách phân cấp tổ chức của tôi là, tôi có ba đối tượng được liên kết với nhau theo cách sau:
Video ---OneToOne--> String ---OneToMany--> LocalizedString
Đơn giản chỉ cần, tôi có một video rằng sẽ có một tiêu đề và tiêu đề này sẽ được dịch. Dưới đây là các đơn vị của tôi:
LocalizedString
OSC\UtilsBundle\Entity\LocalizedString:
type: entity
table: null
repositoryClass: OSC\UtilsBundle\Entity\LocalizedStringRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
locale:
type: string
length: '20'
content:
type: string
length: 255
manyToOne:
parent:
targetEntity: String
mappedBy: localizedObjects
lifecycleCallbacks: { }
Chuỗi
OSC\UtilsBundle\Entity\String:
type: entity
table: null
repositoryClass: OSC\UtilsBundle\Entity\StringRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToMany:
localizedObjects:
targetEntity: LocalizedString
mappedBy: parent
cascade: ["persist", "remove"]
lifecycleCallbacks: { }
video
OSC\MySportBundle\Entity\Video:
type: entity
table: null
repositoryClass: OSC\MySportBundle\Entity\VideoRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToOne:
title:
targetEntity: OSC\UtilsBundle\Entity\String
cascade: ["persist", "remove"]
lifecycleCallbacks: { }
Vì vậy, Tôi đã làm cấu trúc này để tạo thuận lợi cho việc chỉnh sửa trong SonataAdmin. Nếu, thông qua bảng điều khiển quản trị, tôi muốn chỉnh sửa một Chuỗi, tôi có thể dễ dàng chỉnh sửa chuỗi và dịch nó bằng nhiều ngôn ngữ (điều này đã hoạt động).
Tuy nhiên, khi tôi cố gắng thực hiện điều đó trong quản trị viên video, có vẻ như tôi không thể chỉnh sửa nội tuyến (nhấp vào nút thêm không hoạt động) của đối tượng Chuỗi.
Dưới đây là các mã có liên quan trong lớp quản trị video:
$formMapper
->add('title', 'sonata_type_admin', array('delete' => false, 'btn_add' =>false), array(
'edit' => 'inline',
'inline' => 'table',
));
Từ những gì tôi đã tìm thấy, nó trông giống như hai hình thức imbricated không thể? Có cách nào để phá vỡ hạn chế đó không? Hoặc có lẽ đó là thiết kế của tôi mà không phải là quá tốt?
Edit1: Dường như có một bản vá sắp tới trên github: https://github.com/sonata-project/SonataAdminBundle/pull/1971#issuecomment-58023124
Nếu có ai biết làm thế nào tôi có thể sử dụng nó tôi sẽ đánh giá cao.
Chỉ cần sử dụng 'sonata_type_model' và chuyển các tùy chọn liên quan để có các điều khiển tốt hơn –
Bạn đã thử ''inline' => 'standard'' với sonata_type_collection thay vì sonata_type_admin với'' inline '=>' table''? –
Và cũng là StringAdmin của bạn là gì? –