Wpis z mikrobloga

Kolejny dzień nauki sf2…
Mam w bazie danych 2 tablice:
1. article
id | userid | smallimage | largeimage | created | updated
2. article
translations
id | article_id | locale | field | content

W drugiej tabelce zapisuję dane w taki sposób:
http://i.share.pho.to/5dce7036_o.png

Zrobiłem już dodawanie, usuwanie i wyświetlanie listy dodanych elementów, teraz robię edycję istniejących wpisów i napotkałem taką trudność, że nie potrafię wypełnić pól w formularzu danymi pobranymi z bazy danych. Udało mi się, to zrobić, ale to jest zły sposób, bo strona się wykrzaczy, jeżeli przy zapisywaniu do db, przynajmniej jedno pole będzie puste.
Stąd moje pytanie:
1. W jaki sposób pobrać dane z dwóch tabelek i umieścić te dane w jednym formularzu takim jak na obrazku: http://i.share.pho.to/4cf4c7fb_o.png
2. Muszę mieć oddzielne formularze do dodawania i edycji danych, czy da się to zrobić mając jeden formularz?

Kontroller: http://www.textsnip.com/fdt78z/php
Encja Article: http://www.textsnip.com/38uso4/php
Encja ArticleTranslation: http://www.textsnip.com/fob4e1/php
Formularz ArticleEditType: http://www.textsnip.com/ynfwth/php

Podejrzewam, że można to rozwiązać przy pomocy formularzy osadzonych, jednak nie dam sobie głowy uciąć…

#php #symfony2 #sf2 #webdev
  • 15
@mariecziek: "tabelek" ( ͡° ͜ʖ ͡°)

Jeśli chcesz dwie encje mieć w jednym formulrzu musisz zrobić klasę modelu i do niej podpiąć te dwie encje i do tego formularz. Później pamiętaj żeby persistować obie encje.
@kmicolo: Czy wszystko w tym frameworku musi być instalowane poprzez bundle? Jeżeli chcę stworzyć rejestrację i logowanie się użytkowników muszę zainstalować bundle. Jeżeli chcę dodać formularze - muszę zainstalować bundle. Nie ma gdzieś normalnej dokumentacji jak to ma działać (oprócz oficjalnej, bo mam wrażenie, że tam opisane jest wszystko dla osób, które całe życie pracują z sf)?

Jeśli chcesz dwie encje mieć w jednym formulrzu musisz zrobić klasę modelu i do
@mariecziek: bundle to paczki tworzone przez społeczność, jakby pluginy. Jeśli tworzysz swój kod nie musisz go bundlować. Dokumentacja symfony jest 10/10 i jest dokładnie opisane jak możesz napisać własne logowanie, ale fosuserbundle jest już napisany i sprawdzony w dziesiątkach tysięcy projektów.
@mariecziek: To chyba dobrze że wszystko jest w Bundlach? Nie korzystasz, core frameworka ma mniej roboty.
Ogólnie to zacząłbym od teorii :P Encje, relacje, Formularze w Symfony(Opisane w manualu 10/10).
@mer: Tak, tylko ja mam zadanie - nauczyć się. Jakbym miał zadanie, to nie byłbym taki agresywny, gdy ktoś proponuje zainstalować mi bundla. Jak zechcę instalować pluginy, to porobię coś w WordPress.
Teraz chcę zrozumieć jak wszystko działa i dlatego wolę korzystać z narzędzi frameworka, a nie wtyczek.
@mariecziek: Wiesz oczywiście że taki FoS jest rozwijany również przez twórców FW? Ale jak chcesz z palca napisać na przykład obsługe użytkowników to w manualu masz niemalże krok po kroku opisane ( ͡° ͜ʖ ͡°)
@mer: Po rozmowie o pracę otrzymałem zadanie domowe, napisać stronkę , gdzie byłaby rejestracja, logowanie się i dodawanie wpisów, na głównej stronie były wszystkie wpisy, a każdy użytkownik w swoim profilu widział tylko swoje wpisy. Takie zadanko zajęło mi około dzień i w ogóle nie korzystałem z pluginów, a tylko z dokumentacji frameworka. Owszem, hasło było w plain text, ale w takim zadaniu, to raczej nie było ważne.
Dlatego wiem, że
@mariecziek: Jak masz dużo sql'a klepanego QueryBuilderem albo o zgrozo z palca, to chyba ktoś nie potrafi korzystać z Doctrine, chyba że to jakoś bardzo wyrafinowane zapytania.
W większości zadań masz je zrobić, nie wynajdywać koło na nowo. W razie potrzeby Symfony do każdego komponentu Ci udostępnia szereg interfejsów do rozszerzania Frameworku, ale dobrą praktyką jest pakowanie własnej implementacji do reusable bundli.