Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Symfony 1.4 - lista formularzy w edycji, ... oraz jak zmienić wygląd formularzy
damianooo
post 15.09.2012, 20:40:19
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


Witam,

Mam dwa pytania:

1)

Jeśli w akcji executeIndex pobieram kolekcję obiektów do zmiennej $books w ten sposób:

  1. $books = BookTable::getInstance()->findById(3);


I następnie tworzę sobie nowy formularz, do którego przekazuję kolekcję obiektów w ten sposób:

  1. $this->form = new BookForm($books);


Dostaję następujący komunikat o błędzie:

  1. The "BookForm" form only accepts a "Book" object.


Rozumiem z tego, że mogę przekazać tylko jeden pojedynczy obiekt.

W jaki sposób mogę przekazać listę obiektów aby wyświetlić każdy pojedynczy formularz z danymi jeden pod drugim oczywisćie w stanie edycji ?

2)

Jak mogę w formularzu edycyjnym zmienić kolejność i wygląd wyświertlanych pól? Obecnie domyślnie Symfony (1.4) wyświetla mi pola jedno pod drugim. Jak mogę zrobić tak żeby pola wyświetlane mieć jedno obok drugiego , albo część pól w jednej kolumnie a część w drugiej kolumnie ?

dzięki

Ten post edytował damianooo 15.09.2012, 21:51:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
toffiak
post 16.09.2012, 07:29:15
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Ad 2
Każde pola formularza można wyświetlać osobno http://www.symfony-project.org/forms/1_4/e...r-web-Designers

Ad 1
Jeżeli chcesz edytować obiekty klasy Book to najłatwieszym sposobem jest stworzenie tabeli z formularzami a następnie wyświetlenie ich.
Jeśli obiekty klasy Book byłyby powiązane z innym obiektem można stworzyć formularz edycji dla tego obiektu i umieścić formularze dla obiektu Book wewnątrz głównego formularza http://www.symfony-project.org/more-with-s...-Advanced-Forms.


--------------------
Go to the top of the page
+Quote Post
damianooo
post 16.09.2012, 11:51:35
Post #3





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


@toffiak - Napisałeś coś takiego:

Cytat
Jeżeli chcesz edytować obiekty klasy Book to najłatwieszym sposobem jest stworzenie tabeli z formularzami a następnie wyświetlenie ich.


możesz mi podać przykład co masz na myśli mówiąc stworzenie tabeli z formularzami ?

pewnie miałeś na myśli tablicę z formularzami a nie tabelę z formularzami ... ?

Jak zrobię tak w AKCJI :

  1. $this->books = BookTable::getInstance()->findById(3);
  2. $this->a = array();
  3. foreach ($this->books as $bok){
  4. $this->a = new BookForm($bok);;
  5. }


a tak w WIDOKU:

  1. <?php foreach ($a as $bk): ?>
  2. <form>
  3. </form>
  4. <?php endforeach; ?>



to wyświetla mi się kolejno 12 formularzy a powinny tylko 4 ...

czemu tak się dzieje że mam powieloną 3krotnie ilość formularzy w liście w widoku ?

dobrze to w ogóle robię ? dzięki za podpowiedz

Ten post edytował damianooo 16.09.2012, 12:08:22
Go to the top of the page
+Quote Post
toffiak
post 16.09.2012, 16:14:36
Post #4





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Nie wiem czy to tylko literówka w podanym przykładzie ale powinno być z nawiasami kwadratowymi:
  1. $this->books = BookTable::getInstance()->findById(3);
  2. $this->a = array();
  3. foreach ($this->books as $bok){
  4. $this->a[] = new BookForm($bok);;
  5. }


Sprawdź ile właściwie jest obiektów "books", ztego co pamiętam to sprawdzało się to tak.
  1. $this->books->count();

Formularzy nie może być większa ilość niż pobranych obiektów.


--------------------
Go to the top of the page
+Quote Post
damianooo
post 16.09.2012, 19:44:02
Post #5





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


wilkie dzięki ... wszystko działa ... rozwiązanie wygląda następująco:

w formularzu MyBookForm dziedziczę po BookForm i w metodzie configure robię tak:

  1. class MyBookForm extends BookForm
  2. {
  3.  
  4. public function configure()
  5. {
  6.  
  7. parent::configure();
  8.  
  9. }
  10.  
  11. }


w akcji robię tak:

  1. public function executeIndex(sfWebRequest $request)
  2. {
  3. $this->books = BookTable::getInstance()->findById(3);
  4. $this->book = array();
  5. foreach ($this->books as $bok) {
  6. $this->bok[] = new MyBookForm($mag);
  7. }
  8. }


natomiast w widoku robię po prostu tak:

  1. <?php foreach ($bok as $b):?>
  2.  
  3. <form action="<?php echo url_for('book/save');?>" method="POST">
  4. <table>
  5. <tr>
  6. <?php echo $b['name'] ?>
  7. </tr>
  8. <tr>
  9. <?php echo $b['secured'] ?>
  10. </tr>
  11. <tr>
  12. <td colspan="2">
  13. <input type="submit" value="Save"/>
  14. </td>
  15. </tr>
  16. </table>
  17. </form>
  18.  
  19. <?php endforeach;?>



pozdrawiam

Ten post edytował damianooo 16.09.2012, 19:46:00
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: 14.08.2025 - 04:24