2017-11-27 24 views
-1

엔티티 "파일"이 있으며 파일 시스템에 기존 관련 파일의 부울 값을 표시하려고합니다. 존재 여부를 확인하기 위해이 File 엔티티를 사용하여 탐지 할 수있는 내 DirectoriesManager 서비스를 사용해야합니다. 이 작업을 위해 ListMapper를 구성하는 올바른 방법은 무엇입니까? 아니면 소나타 템플릿을 다시 작성해야만 해결할 수 있습니까?
그래서, 내가 무엇을 만들어 내 템플릿서비스에서 계산하는 가상 엔티티 필드 값을 올바르게 표시하는 방법은 무엇입니까?

을 exist.html.twig

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->add('id') 
     ->add('exist', null, [ 
      'template' => 'AdminBundle:Files:exist.html.twig' 
     ]); 
} 

그리고

config.yml

twig: 
    debug: '%kernel.debug%' 
    strict_variables: '%kernel.debug%' 
    globals: 
     container: '@service_container' 

내 소나타 관리 클래스

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} {% block field %} {% set value = container.get('dirs_manager').entityFileExist(object) %} {% if value %} {% set text = 'label_type_yes'|trans({}, 'SonataAdminBundle') %} {% else %} {% set text = 'label_type_no'|trans({}, 'SonataAdminBundle') %} {% endif %} {% if value %} {% set class = 'label-success' %} {% else %} {% set class = 'label-danger' %} {% endif %} <span class="label {{ class }}">{{ text }}</span> {% endblock %} 

service DirectoriesManager에는 별칭 dirs_manager가 있습니다.

Yii2에서는 모든 값을 보여주는 모든 모델에 대해 콜백을 사용하여 GridView 위젯 열을 구성 할 수 있다는 것을 알고 있습니다. ListMapper와 같은 것을 만들 수 있습니까?

+0

질문에 시도한 것을 추가하십시오. – svgrafov

+0

@svgrafov 내 잘못입니다. 업데이트를 참조하십시오. –

답변

0

나는 doctrine의 postLoad 이벤트에 대한 리스너 콜백을 추가 할 것이다. 콜백 내부에서 서비스를 사용하고 해당 부울 엔티티의 값을 설정합니다.

+0

감사의 말을 전했습니다. –

+0

감사합니다. –