我的Sonata CRUD列表页面工作正常,但我想显示实体值和来自我的parameters.yml 的数组之间的对应值:(显示标签而不是显示标签更好键。)
我有一个实体USER,其categoriesType字段的值为'cat_1'。 这是列表中显示的值(所以......很难看)
但是在我的奏鸣曲列表页面中,我希望在我的parameters.yml中设置一个更好的值“Category 1”。
问题:
如何在列表中显示“类别1”而不是“cat_1”? 有没有可能用我的parameters.yml中的那些替换/映射值?
categories:
cat_1:
title: Category 1
template: xxx.html.twig
cat_2:
title: Category 2
template: ggg.html.twig
cat_3:
title: 'Category 3
template: zzz.html.twig
服务:
<service id="etna.form.type.categories" class="Etna\FrameworkBundle\Form\Type\CategoriesType">
<argument>%categories%</argument>
<tag name="form.type" alias="categories" />
</service>
表格类型:
namespace Etna\FrameworkBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class CategoriesType extends AbstractType
{
/** @var array */
protected $categories;
/**
* @param array $categories
*/
public function __construct(array $categories)
{
$titles = array_map(function($categories) {
return $categories['title'];
}, $categories);
$this->categories = $titles;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'choices' => $this->categories,
));
}
/**
* @return null|string|\Symfony\Component\Form\FormTypeInterface
*/
public function getParent()
{
return 'choice';
}
/**
* @return string
*/
public function getName()
{
return 'categories';
}
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name', 'string', array('label' => 'Nom'))
->add('expression', 'string', array('label' => 'Expression'))
->add('categoriesType', 'categories', array('label' => 'Nom'))
->add('enabled', null, array('label' => 'Activé'))
;
}