Witam próbuję stworzyć swój własny prosty input korzystający z templatki. Próbowałem wykonać według. https://symfony.com/doc/current/cookbook/fo...field_type.html

No i tak:

Dodałem:
  1. // src/AppBundle/Form/Type/GenderType.php
  2. namespace AppBundle\Form\Type;
  3.  
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\OptionsResolver\OptionsResolver;
  6.  
  7. class GenderType extends AbstractType
  8. {
  9. public function configureOptions(OptionsResolver $resolver)
  10. {
  11. $resolver->setDefaults(array(
  12. 'choices' => array(
  13. 'm' => 'Male',
  14. 'f' => 'Female',
  15. )
  16. ));
  17. }
  18.  
  19. public function getParent()
  20. {
  21. return 'choice';
  22. }
  23.  
  24. public function getName()
  25. {
  26. return 'gender';
  27. }
  28. }


oraz:
  1. {# app/Resources/views/Form/fields.html.twig #}
  2. {% block gender_widget %}
  3. {% spaceless %}
  4. {% if expanded %}
  5. <ul {{ block('widget_container_attributes') }}>
  6. {% for child in form %}
  7. <li>
  8. {{ form_widget(child) }}
  9. {{ form_label(child) }}
  10. </li>
  11. {% endfor %}
  12. </ul>
  13. {% else %}
  14. {# just let the choice widget render the select tag #}
  15. {{ block('choice_widget') }}
  16. {% endif %}
  17. {% endspaceless %}
  18. {% endblock %}


no config:
  1. twig:
  2. form_themes:
  3. - 'AppBundle:Form:fields.html.twig'


No i teraz teoretycznie powinno działać.

  1. $form = $this->createFormBuilder($task)
  2. ->setAction($this->generateUrl('pagesStore'))
  3. ->setMethod('POST')
  4. ->add('gender_code', new GenderType(), array(
  5. 'placeholder' => 'Choose a gender',
  6. ))
  7. ->add('task', 'text')
  8. ->add('dueDate', 'date')
  9. ->add('save', 'submit', array('label' => 'create task'))
  10. ->getForm();


dostaje błąd:

Neither the property "gender_code" nor one of the methods "getGenderCode()", "genderCode()", "isGenderCode()", "hasGenderCode()", "__get()" exist and have public access in class "AppBundle\Entity\Task

Co może być nie tak?

Już zrobiłem nie dodałem pola w Entity