Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] admin generator i klucz złożony
Forum PHP.pl > Forum > PHP > Frameworki
blackroger
witam! Mam tabelę Category i CategoryRelations. Tabela CategoryRelations posiada klucz złozony z parent_id i child_id które do odnoszą się do tabeli Category.
Wygenerowany formularz standardowo ustawił pola hidden na klucz główny

  1. sfWidgetFormInputHidden()


i dał validatory w postaci

  1. new sfValidatorChoice(array('choices' => array($this->getObject()->getCategoryId()), 'empty_value' => $this->getObject()->getCategoryId(), 'required' => false)),


widgety nadpisalem standardowym choicem

  1. $this->widgetSchema['parent_id'] = new sfWidgetFormPropelChoice(
  2. array('model' => 'category'));
  3.  


W formularzu pojawia się oczekiwany select ale jest problem przy zapisie bo jest wartość invalid.
Normalnie dałbym w walidatorze tablicę choices ale tu jest problem bo wartości te są jednocześnie złożonym kluczem głównym więc nie może być powtórzeń :/

Aha i jescze jedna sprawa:
Catchable fatal error: Object of class sfOutputEscaperArrayDecorator could not be converted to string in D:\Praca\projects\project1\cache\backend\dev\modules\autoCategoryRelations\templates\_list_td_batch_actions.php on line 2

to sie pojawia w momencie listowania wpisów, gdy w CategoryRelations jest co najmniej jeden wpis

Proszę o pomoc.
Mephistofeles
Co do tego drugiego, to musisz napisać __toString, widocznie nie masz domyślnie szukanych przez symfony pól w modelu.
blackroger
Mógłbyś objaśnić? Co to znaczy napisać __toString()? W modelu mam dodać czy gdzie?
Mephistofeles
Jobeeta czytałeś?
Tak wygląda standardowa funkcja z sfDoctrineRecord:
  1. 111 public function __toString()
  2. 112 {
  3. 113 $guesses = array('name',
  4. 114 'title',
  5. 115 'description',
  6. 116 'subject',
  7. 117 'keywords',
  8. 118 'id');
  9. 119
  10. 120 // we try to guess a column which would give a good description of the object
  11. 121 foreach ($guesses as $descriptionColumn)
  12. 122 {
  13. 123 try
  14. 124 {
  15. 125 return (string) $this->get($descriptionColumn);
  16. 126 } catch (Exception $e) {}
  17. 127 }
  18. 128
  19. 129 return sprintf('No description for object of class "%s"', $this->getTable()->getComponentName());
  20. 130 }

Jeśli nie masz takich pól to symfony nie przetworzy obiektu na tekst, więc musisz napisać w swoim modelu własną funkcję.
blackroger
dopisałem metodę ale dalej jest to samo....korzystam z propela ....Martwi mnie to bo inne klasy działają i wszystko jest dobrze....problem jest tylko w tej klasie CategoryRelations gdzie jest klucz złożony....
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.