Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]formy wbudowane, post-walidacja, wybierz/stwórz obiekt
Forum PHP.pl > Forum > PHP > Frameworki
Goska
Witajcie,

Mam problem z formularzem, w którym użytkownik może wybrać obiekt z tabeli lub dodać nowy obiekt do tej samej tabeli. Na przykladzie: użytkownik tworzy nowe Interview (w formie głównej), gdzie Interview jest przeprowadzane z Celebrity. Celebrity może być wybrana z listy lub stworzona nowa (w formie wbudowanej). W którym miejscu powinno nastąpić powiaząnie miedzy wybranym/stworzonym obiektem z wbudowanej formy a obiektem z formy głównej, innymi słowy w którym miejscu powinnam nadac wartość polu celebrity_id?

Moj schemat:
Kod
Interview:
  columns:
    title
    celebrity_id
  relations:
    Celebrity:
      local: celebrity_id
      foreign: id
Celebrity:
  columns:
    name
    file_name


Częściowe rozwiązanie znalazłam na tej stronie:
http://www.miximum.fr/tutos/466-symfony-form-pick-or-create
Próbuje rozwiazać ten sam przypadek z jednym dodatkowym polem, file_name dla Celebrity (chcę żeby Celebrity miała też zdjęcie). Autor radzi zrobić to przypisanie w funkcji:

Kod
public function doUpdateObject($values) {

        if(!empty($values['Celebrity']['celebrity_id'])) {
            $this->getObject()->setCelebrityId($values['Celebrity']['celebrity_id']);
        }
        else {
            $celebrity = new Celebrity();
            $celebrity->fromArray($values['Celebrity']['new_celebrity']);
            $this->getObject()->Celebrity = $celebrity;

        }
....
}

Rozwiązanie podane w tym tutorialu dziala mi dla tamtego schematu. Problem pojawia się, gdy dodaję nową Celebrity ze zdjęciem. Wówczas pole file_name pozostaje puste. Czemu
Kod
$celebrity->fromArray($values['Celebrity']['new_celebrity']);

nie przekazuje nazwy pliku a pozostałe pola tak?

Będę wdzięczna za wszelkie porady i wskazówki.

Pozdrawiam,
Goska
destroyerr
Nie zastanawiałem się nad całym problemem, tylko nad brakiem wartości tego pola. Po pierwsze nie wiemy co jest w zmiennej $values, jeśli jest w niej wynik metody sfForm::getValues() to znaczy, że zamiast oczekiwanej przez Ciebie nazwy pliku jest obiekt klasy sfValidatedFile. Szukaj przyczyny w tych okolicach.
Podejrzewam, że pobierasz dane z formularza w akcji i tam zapisujesz obiekt, nie zapisując wcześniej pliku, ale to jest wróżbiarstwo.
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.