这就是我目前的做法,有更好的方式,还是更合适的方式?
protected function configureListFields(ListMapper $listMapper)
{
$this->sale_type_arr = array('1'=>'Value1','2'=>'Value2');
$listMapper
->add('saleType','string', array(
'template' => 'AppBundle:ItemAdmin:list_saleType.html.twig',
'label'=>'saleType'
))
...
}
我的模板文件如下:
<td>
{% if object.saleType !='0' %}
{{ attribute( admin.sale_type_arr, object.saleType) }}
{% endif %}
</td>
一切正常,没问题,只是感觉不对。应该有一种方法如何直接注入数组值,基于add(..)中的Items数据库值。
帮助表示赞赏。
答案 0 :(得分:0)
我建议您不要在字段中使用{{attribute(...)}}。在可视化模板时,范围完全隐藏。
更好的解决方案是直接在模板中设置关联数组。从架构的角度来看,它并不理想,但为您提供最佳的代码可见性。
请参阅下面的建议(我为完整模板编写了所有必要的代码):
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{% set sale_type_arr_custom = {1: 'Value1', 2: 'Value2'} %}
{% if object.saleType !='0' %}
{# Additionaly, protect for unknown key #}
{% if object.saleType in sale_type_arr_custom|keys %}
{{ sale_type_arr_custom[object.saleType] }}
{% endif %}
{% endif %}
{% endblock %}