Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony2] FormBuilder poza kontrolerem, jak tego dokonać ?
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


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 ?


--------------------
:)
Go to the top of the page
+Quote Post
m44
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 10
Dołączył: 16.11.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 19:47