Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Symfony2]Edycja div-ow w koleckji formularzy
marcio
post 2.07.2012, 16:23:31
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Hej mam maly i zarazem duzy problem mam oto i taki kod html wygenerowany przez Form Builder:
http://www6.shareimage.org/viewer.php?file...ks74xjjcwy1.bmp
Tam pokazalem glowny div-y kazdy z nich potem ma label i input pola.

Problem polega na tym ze do kazdego diva chcialbym dodac tez klase css.
Probowalem za pomoca:
  1. $builder->add('items', 'collection', array('attr' => array('class' => 'adjustRow')));

I nic
  1. $builder->add('items', 'collection', array('options' => array('attr' => array('class' => 'adjustRow'))));

Tez nic.
Probowalem tez metody:
  1. getDefaultOptions(array $options) { }

I tez nic.
Za cholere nie potrafie dodac tam klasy a potrzebuje bo jak nie to mi zle rozmieszcza elementy...

Czy ktos wie jak pomoc?!?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
AxZx
post 2.07.2012, 17:17:41
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


spróbuj z własnym kodem html formularzy.
tutaj więcej o tym:
http://symfony.com/doc/current/book/forms.html#form-theming

tutaj masz główny plik z widokiem formularzy:
https://github.com/symfony/symfony/blob/mas...ayout.html.twig

musisz utworzyć sobie swój plik w katalogu np app albo w katalogu widoków w jakimś bundle. w tym pliku możesz wstawić bloki tylko te, które chcesz nadpisać, podmienić.
jak wyświetlasz formularz używasz właśnie tego pliku.
albo możesz globalnie do wszystkich formularzy w całym serwisie, wtedy w konfiguracji musisz to ustawić.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Mephistofeles
post 2.07.2012, 17:29:40
Post #3





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


http://symfony.com/doc/current/cookbook/fo...tomization.html

PS. Mężczyzna, nie męszczyzna ohmy.gif.
Go to the top of the page
+Quote Post
marcio
post 2.07.2012, 18:46:19
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(Mephistofeles @ 2.07.2012, 18:29:40 ) *

Co do linka to znam myslalem ze jest jakies latwiejsze rozwiazanie...

A co do Mezczyzna to sry ale nie chodze do polskie szkoly to sie troche pozapominalo.

Czyli tak jak myslalem nie ma innej metody oprocz theme z twig-a?

Domyslam sie ze ta czesc musialbym "nadpisac":
Cytat
form_widget_compound

questionmark.gif

EDIT:
Tak wyglada generowanie formularza:
  1. /**
  2.   * Builds the form
  3.   *
  4.   * @param FormBuilder $builder The form builder
  5.   * @param array $options The options
  6.   * @return void
  7.   *
  8.   * @see Symfony\Component\Form\AbstractType::buildForm()
  9.   */
  10. public function buildForm(FormBuilder $builder, array $options)
  11. {
  12. $builder->add('items', 'collection');
  13. $settings = $this->objectToArray();
  14.  
  15. foreach ($this->items as $item)
  16. {
  17. if(isset($settings[$item->getId()]))
  18. {
  19. if($item->getGroup()->getId() == $settings[$item->getId()]['groupID'] && $item->getId() == $settings[$item->getId()]['itemID'])
  20. {
  21. if($item instanceof Item)
  22. {
  23. $builder->get('items')->add('item_' . $item->getId(), new ItemType($item, $settings[$item->getId()]['widget'], $settings[$item->getId()]));
  24. }
  25. }
  26. }
  27. else
  28. {
  29. if($item instanceof Item)
  30. {
  31. $builder->get('items')->add('item_' . $item->getId(), new ItemType($item, $this->widget));
  32. }
  33. }
  34. }
  35. }
  36.  
  37. /**
  38.   * Returns the name of this type
  39.   * @return string
  40.   */
  41. public function getName()
  42. {
  43. return 'configurationForm';
  44. }


Ten post edytował marcio 2.07.2012, 19:53:00


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
destroyerr
post 2.07.2012, 19:58:00
Post #5





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Nie, powinieneś nadpisać field_row ewentualnie form_row. Mniej więcej tak to powinno wyglądać:
Kod
{% extends "::layout.html.twig" %}

{% form_theme form _self %}

{% block field_row %}
    <div class="adjustRow">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </div>
{% endblock %}

{% block content %}
    {{ form_widget(form) }}
{% endblock %}


Ten post edytował destroyerr 2.07.2012, 20:01:30
Go to the top of the page
+Quote Post
marcio
post 3.07.2012, 14:27:00
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Widze ze field_row to jest to samo co form_row i ze to pierwsze od wersji 2.3 nie powinno w ogole istniec.

Ja formularz generuje tak:
Kod
            <form id="{{ formName }}" class="" action="{{ path('cms_configuration', {'group': id}) }}" method="post" {{ form_enctype(form) }}>
                {% for f in form.items %}
                    {{ form_widget(f) }}
                {% endfor %}
                {{ form_widget(form._token) }}
                {{ form_rest(form) }}
                <div class="submit-button horizontalCenteredWrapper">
                    <div class="horizontalCenteredContainer">
                        <input type="submit" value="Zapisz" class="submit" />
                    </div>
                </div>
            </form>

Czy w petli tez mozna zrobic taki zabieg?

Ok tak wyglada rozwiazanie:
  1. {% extends ['MeritooBackendCmsBundle::layout.html.twig', '::layout.html.twig'] %}
  2.  
  3. <form id="{{ formName }}" class="" action="{{ path('cms_configuration', {'group': id}) }}" method="post" {{ form_enctype(form) }}>
  4. {% for f in form.items %}
  5. {% block field_row %}
  6. {% spaceless %}
  7. <div class="adjustRow">
  8. {{ form_widget(f) }}
  9. </div>
  10. {% endspaceless %}
  11. {% endblock field_row %}
  12. {% endfor %}
  13. {{ form_widget(form._token) }}
  14. {{ form_rest(form) }}
  15. <div class="submit-button horizontalCenteredWrapper">
  16. <div class="horizontalCenteredContainer">
  17. <input type="submit" value="Zapisz" class="submit" />
  18. </div>
  19. </div>
  20. </form>


Mam jeszcze jedno pytanie mam modul konfiguracji w CMS zaleznie od pola mamy rozne pola dla opcji dziala wszystkie oprocz 2.
Choice checkbox/multiple menu

Gdy zrobie tak(to jest przyklad):
  1. $builder->add('value', 'choice', array
  2. (
  3. 'label' => $this->item->getTitle() . ':',
  4. 'choices' => array('1' => 'jeden', '2' => 'dwa'),
  5. 'multiple' => true,
  6. 'expanded' => true,
  7. )
  8. );

Wywala mi:
Cytat
Expected argument of type "array", "string" given

Wtf?Szukam tak szczerze od kilku dni, to jest ostatnia poprawka jaka musze zrobic i jedyna ktorej nie potrafie zrobic haha.gif http://symfony.com/doc/current/reference/f...pes/choice.html a przeciez wszystko robie dobrze!

P.S
Taki sam mam blad gdy multiple = true expanded = false (multiple menu) a dla checkbox/menu dziala...


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
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 Wersja Lo-Fi Aktualny czas: 27.09.2024 - 03:23