나는 Symfony 2.3을 사용하여 SonataAdmin에서 ImageAdmin 클래스와 관련된 실제 객체를 가져와 조작하려고합니다. ImageAdmin 클래스가 사용되는 유일한 경우이 잘 작동합니다. 그러나 ImageAdmin이 다른 관리자에 포함되어 있으면 잘못 처리됩니다.Sonata Admin의 임베디드 Admin 클래스에서 하위 객체를 가져 오는 방법은 무엇입니까?
class ImageAdmin extends Admin {
protected $baseRoutePattern = 'image';
protected function configureFormFields(FormMapper $formMapper) {
$subject = $this->getSubject();
}
}
하지만 ParentAdmin에 ImageAdmin을 포함 할 때 사용 : 당신이 부모 항목을 편집 할 때 다음
class PageAdmin extends Admin {
protected function configureFormFields(FormMapper $formMapper) {
$formMapper->add('image1', 'sonata_type_admin');
}
}
을
다음은 내장 된 관리자가 없을 때 작동하는 무슨이다 id 10을 호출하고 ImageAdmin에서 getSubject()를 호출하면 이미지 및 id 10!
다시 말해 getSubject()는 URL에서 ID를 추출한 다음 $this->getModelManager()->find($this->getClass(), $id);
을 호출합니다.이 값은 부모 ID와 이미지 ID를 상호 참조합니다. 죄송합니다.
그래서 ... 내가 뭘 원하는가 직접 또는 포함 된 양식을 사용하여 편집되고 있는지 여부, 현재 ImageAdmin 인스턴스에서 편집 렌더링되는 실제 객체 /의 보류를 얻을 수 있으며, 그때 그것으로 일을 할 수 있어야합니다.
아마도 getSubject()는 잘못된 트리로 짖을 수도 있지만, ImageAdmin :: configureFormFields()에서 호출하면 $this->getCurrentChild()
은 sonata_type_admin 필드 유형을 사용하여 ImageAdmin이 포함 된 경우에도 false를 반환합니다. 나는 아주 혼란 스럽다. ...
어쨌든 간과 한 일부 명백한 방법으로 물건을 잡아서 누군가가 나를 계몽하는 데 도움이되기를 바란다.
caponica의 솔루션은 oneToOne 관계에서만 작동합니다. ? 내 oneToMany 경우, this : $ parent -> $ getter()는 콜렉션을 리턴하고 현재 주제를 식별하는 방법을 모른다. 나는이 버그 보고서를 발견했다 : https : // github.co.kr/sonata-project/SonataAdminBundle/issues/1568에 수정 사항이 포함되어 있지만 아직 열려 있으므로 곧 병합하기를 바랍니다. – hombee