엔티티 "파일"이 있으며 파일 시스템에 기존 관련 파일의 부울 값을 표시하려고합니다. 존재 여부를 확인하기 위해이 File 엔티티를 사용하여 탐지 할 수있는 내 DirectoriesManager 서비스를 사용해야합니다. 이 작업을 위해 ListMapper를 구성하는 올바른 방법은 무엇입니까? 아니면 소나타 템플릿을 다시 작성해야만 해결할 수 있습니까?
그래서, 내가 무엇을 만들어 내 템플릿서비스에서 계산하는 가상 엔티티 필드 값을 올바르게 표시하는 방법은 무엇입니까?
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와 같은 것을 만들 수 있습니까?
질문에 시도한 것을 추가하십시오. – svgrafov
@svgrafov 내 잘못입니다. 업데이트를 참조하십시오. –