Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] generator admina + i18n
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam!
Mam pewien problemik z wersjami językowymi w adminie.
Schemat 2 tabel:
Kod
  attraction:
    _attributes: {phpName: Attraction}
    id:
    icon:        {type: varchar(40), required: true}
  attraction_i18n:
    _attributes: {phpName: AttractionI18n}
    name:        {type: varchar(20), required: true}

czyli nic nadzwyczajnego. Tworzenie i edycję danych załatwiłem z pomocą tego linku. Mam jednak pewien problem z wyświetlaniem listy "atrakcji". Otóż załóżmy, że mamy 3 wersje językowe: PL, ENG, DE oraz 2 rekordy w tabeli "attraction". Każdy z nich posiada wpisaną nazwę dla wersji PL oraz ENG, natomiast nie dla DE. Przechodząc do listy atrakcji w PL mamy ikonkę + napis po polsku (na dole: 2 results), to samo jest dla wersji ENG. Natomiast dla wersji DE nie wyświetla się nic, a na dole nadal jest "2 results".
Wykonywane są zapytania:
Kod
[0.28 ms] SELECT COUNT(attraction.ID) FROM attraction
[2.23 ms] SELECT attraction.ID, attraction.ICON, attraction_i18n.NAME, attraction_i18n.ID, attraction_i18n.CULTURE FROM attraction, attraction_i18n WHERE attraction_i18n.CULTURE='de_DE' AND attraction.ID=attraction_i18n.ID LIMIT 20

Domyślam się, że "2 results" pochodzi z pierwszego, natomiast listę rekordów wyświetla drugie (które nic nie zwraca).
Mój generator.yml:
Kod
generator:
  class:              sfPropelAdminGenerator
  param:
    model_class:      Attraction
    theme:            default
    
    list:
      title: Attractions list
      display: [_icon, name]
      object_actions:
        _edit: ~
        _delete: ~
      peer_method:   doSelectWithI18n
    
    edit:
      title: Attraction form
      display: [icon, name]
      fields:
        icon:
          type: admin_input_file_tag
          upload_dir: attraction
          params:
            include_link: attraction
            include_remove: true
        name:
          params: disabled=false

Pozdrawiam: pion
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
pawel_k
post
Post #2





Grupa: Zarejestrowani
Postów: 211
Pomógł: 3
Dołączył: 29.07.2005
Skąd: Szczebrzeszyn

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


atrybut peer_method służy tylko do pobieranie danych, zmieniasz go jeśli nie chcesz pobierać danych za pomocą standardowego doSelect, a do liczenia liczby kolumn masz osobny atrybut zastępujący domyślny doCount, chyba peer_count_method ale nie jestem teraz w stanie tego sprawdzić, musisz sam poszukac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Dzięki za odpowiedź.

Problem w tym, że chciałbym wyświetlić po 2 rekordy w każdej wersji językowej; problem nie jest w różnicy w ilości wyświetlonych rekordów, a liczbą "X results", a w tym, że jeśli nie ma tłumaczenia rekordu dla danej wersji językowej to wogóle nie jest on wyświetlany na liście.

W przypadku PL oraz ENG widoczne byłoby tłumaczenie, natomiast w wersji DE chciałbym aby "name" było puste (gdyż nie jest wpisane do bazy), a nie tak jak jest teraz, że rekord wogóle nie jest wyświetlany. Rozumiem, że po prostu zapytanie:
  1. SELECT attraction.ID, attraction.ICON, attraction_i18n.NAME, attraction_i18n.ID, attraction_i18n.CULTURE FROM attraction, attraction_i18n WHERE attraction_i18n.CULTURE='de_DE' AND attraction.ID=attraction_i18n.ID LIMIT 20

nic nie zwraca, bo nie ma takich rekordów spełniających "attraction_i18n.CULTURE='de_DE' AND attraction.ID=attraction_i18n.ID".
Aktualnie aby zmodyfikować nazwę dla wersji niemieckiej muszę wejść w wersji polskiej na dany element, a następnie przełączyć się na wersję niemiecką (w czasie edycji z wersji polskiej).

Może teraz nieco jaśniej wytłumaczyłem.
pion

Ten post edytował phpion.com 21.10.2007, 12:17:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 13:12