Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2] FormBuilder poza kontrolerem
Forum PHP.pl > Forum > PHP > Frameworki
peter13135
Usiłuję zrobić takie rozszerzenie do twiga, które wyświetli mi formularz za pomocą jednej funkcji np.
  1. {{admform()}}



zrobiłem takie coś :
  1. <?php
  2.  
  3. namespace Adm\FormBundle\Twig;
  4.  
  5. use Twig_Extension;
  6. use Twig_Function_Method;
  7. use Symfony\Component\Form\FormBuilder;
  8. class TwigExtension extends Twig_Extension
  9. {
  10. public function getFunctions()
  11. {
  12. return array(
  13. 'admform' => new Twig_Function_Method($this, 'admform'),
  14. );
  15. }
  16.  
  17. public function admForm()
  18. {
  19. return 'hehehehhe';
  20. }
  21.  
  22. public function getName()
  23. {
  24. return 'twig_extension';
  25. }
  26. }
  27.  
  28.  
  29.  
  30. ?>


No i do tej pory działa. Formularza nie ma, ale "hehehehhe" się wyświetla.



W jaki sposób mogę wewnątrz tej metody użyć stworzyć formBuildera ?

coś w przybliżeniu tego kodu :
  1. $form = $this->createFormBuilder($task)
  2. ->add('task', 'text')
  3. ->add('dueDate', 'date')
  4. ->getForm();

tylko, że nie w kontrolerze.


Zajrzałem jak wygląda klasa Controller, znalazłem taki kod :

  1. $fb = $this->container->get('form.factory')->createBuilder('form', null, array());


Jednak nie wiem jak się dostać do kontenera w klasie dziedziczącej po Twig_Extension.

taki kod :

  1. new FormBuilder('form', null, array());


Też nie działa.

Jakieś propozycje ?
m44
Jak rejestrujesz swoje rozszerzenie do Twig-a nadając mu tag o specjalnym znaczeniu, to możesz wstrzyknąć dodatkową zależność poprzez "call" lub bezpośrednio w konstruktorze:

Kod
        <service id="acme.twig.extension" class="%acme.twig.extension.class%">
            <tag name="twig.extension" />    
            <argument type="service" id="id.jakiegos.serwisu"/>
            <call method="setJakisSerwis">
                 <argument type="service" id="id.jakiegos.serwisu" />
            </call>  
        </service>


http://symfony.com/doc/current/book/servic...ecting-services
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.