Моя страница листинга Sonata CRUD работает правильно, но я хотел бы отобразить соответствующее значение между значением сущности и массивом из моего parameters.yml: (лучше показывать метку вместо ключа ..)
У меня есть сущность USER с полем categoryType со значением ‘cat_1’.
Это значение, отображаемое в листинге (так что .. это ужасно)
Но на моей странице со списком сонат я хотел бы отобразить более приятное значение «Категория 1», как установлено в моем parameters.yml.
Вопрос:
Как я могу отобразить «Категория 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é'))
;
}
Задача ещё не решена.
Других решений пока нет …