Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] dynamiczne języki
Forum PHP.pl > Forum > PHP > Frameworki
Virti
Witam, chciałbym się dowiedzieć, czy ktoś ma pomysł, jak rozwiązać następujące zagadnienie:
potrzebuję strony, na której będę mógł dynamicznie dodawać i usuwać języki, pisać w nich różne artykuły, czyli np.
mam język polski i rosyjski oraz napisałem do nich 2. wersje artykułu test (jedna pl i jedna ru), dodaję teraz język angielski i dopisuje 3 wersję artykułu. Mogę teraz również usunąć język rosyjski, usuwając również wersję rosyjską tego artykułu.

Ma ktos pomysł jak powinien wyglądać plik schema.yml przy projektowaniu takiego rozwiązania? Jak mam wypełnić informacje o polu culture tak, aby obsługiwało i poznawało języki z innej tabeli?

Pozdrawiam winksmiley.jpg
phpion
Nie wiem czy dobrze zrozumiałem Twoje pytanie ale wszystko masz opisane w dokumentacji wraz z przykładowym schematem tabel.
Virti
nie do końca o takie rozwiązanie mi chodzi.

Dajmy na to mam tabelę, "culture", w której trzymam nazwę języka (ankielski, rosyjski) i jego kod (en, ru).mam również tabelę page oraz page_i18n. Chcę, abym dodając stronę miał do wyboru języki z tabeli "culture" jednocześnie zachowując wszystkie właściwości rozwiązania podanego przez Ciebie. Do tego momentu to nie jest aż takie trudne. Teraz dochodzi kolejne wyzwanie, czyli połączenie tabel culture, page_i18n kluczem foreign (nie wiem jak to się nazywa winksmiley.jpg na pewno wiadomo o co mi chodzi) tak, aby podczas usuwania danego języka usunęło również wszystkie strony w nim napisane (czyt mające przypisane id tego języka w polu culture).

Oczywiście mógłbym dodać w modelu tabeli culture, przy usuwaniu rekordu, usuwanie wszystkiego, co z nim jest powiązane, ale wtedy nie będę mógł elastycznie dodawać innych modułów wymagających przetłumaczenia (np. galeria). Chodzi mi o zautomatyzowanie, żeby tabele wszystkich wielojęzycznych modułów były spokrewnione z culture.
kamil_biela
Może zdarzenia http://www.symfony-project.org/book/1_1/17-Extending-Symfony

+ zdefiniowanie interfejsu który muszą implementować moduły (a w nim doRemoveLang) + wymuszenie nasłuchiwania na zdarzenie usunięcia języka
Virti
Rozwiązałem problem jednak trochę inaczej, wydaje mi się to najprostszy sposób, nie wiem dlaczego wcześniej na to nie wpadłem winksmiley.jpg
Kod
propel:
  culture:
    id: ~
    name: { type: varchar(255), required: true }
    code: { type: varchar(7), required: true }
    is_default: { type: boolean, required: true, default: 0 }

  page:
    id: ~
    homepage: { type: boolean, required: true, default: 0 }

  page_translated:
    id:      ~
    page_id: { type: integer, foreignTable: page, foreignReference: id, onDelete: cascade, required: true }
    title:   { type: varchar(255), required: true }
    shortcut:    { type: varchar(255), required: true }
    text: { type: longvarchar, required: true }
    culture_id: { type: integer, foreignTable: culture, foreignReference: id, onDelete: cascade, required: true }

Teraz mam następujące pytanie, czy w wygenerowanym adminie mogę dynamicznie dołączyć formularz do spokrewnionej tabeli (opieram się na schemacie)? Już wyjaśniam o co mi chodzi:
Dodaję stronę, moduł page -> klikam na New i chciałbym zobaczyć formularz tak, jak by był wygenerowany dla page_translated, czyli z polami typu title, text, culture_id.

Ma ktoś pomysł? Czy muszę to ręcznie robić?

Pozdrawiam.
kamil_biela
Hmm... możesz zawsze zrobić własną klasę formularza i w niej mieszać:
Kod
config:
  form:
    class: FooBarForm
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.