Добавьте пользовательскую звездочку рейтинга в поле формы в методе sonata configureFormFileds - PullRequest
0 голосов
/ 07 ноября 2018

Я использую 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

1 Ответ

0 голосов
/ 07 ноября 2018

Ну, я не знаю, как правильно связать их, но у меня есть альтернатива для вас.

Вы можете использовать этот пакет для добавления рейтинговых звезд в вашу систему вместо пользовательских. StarRatingBundle

Надеюсь, это поможет

...