Я использую sonata admin, и я создал пользовательский тип поля формы, следуя этим инструкциям: symfony_3.4_custom_form_field .
Я не могу понять, как связать свой пользовательский шаблон для звездочек рейтинга с полем rate в методе ConfigureFormFields. Вот мои методы:
<?php
class RatingType extends AbstractType
{
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
//foreach (range(1, 5) as $range) {
$resolver->setDefaults([
'choices' => [
'rating_1' => 1,
'rating_2' => 2,
'rating_3' => 3,
'rating_4' => 4,
'rating_5' => 5,
],
'choices_as_values' => true,
//'attr' => ['style' => "font-family: 'FontAwesome'"],
]);
//}
}
/**
* @return null|string
*/
public function getParent()
{
return ChoiceType::class;
}
}
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('rate', RatingType::class, [
'required' => false,
'label' => 'Rating',
'expanded' => true,
])
->end()
}
Custom template fields_admin.html.twig:
<form>
<ul class="rating-choices">
<li><label for="rating_1"><i class="fa fa-star" aria-hidden="true"></i></label><input type="radio" name="ratings" id="rating_1" value="1"/></li>
<li><label for="rating_2"><i class="fa fa-star" aria-hidden="true"></i></label><input type="radio" name="ratings" id="rating_2" value="2"/></li>
<li><label for="rating_3"><i class="fa fa-star" aria-hidden="true"></i></label><input type="radio" name="ratings" id="rating_3" value="3"/></li>
<li><label for="rating_4"><i class="fa fa-star" aria-hidden="true"></i></label><input type="radio" name="ratings" id="rating_4" value="4"/></li>
<li><label for="rating_5"><i class="fa fa-star" aria-hidden="true"></i></label><input type="radio" name="ratings" id="rating_5" value="5"/></li>
</ul>
</form>
Current Default Result:
![admin area](https://i.stack.imgur.com/hF9nH.png)