![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam, może ktoś miał już podobny problem. Mam tabelkę w bazie
id_marki | id_kategorii | opis gdzie id_marki i id_kategorii to zarazem klucz tabeli i klucze obce w dwóch innych tabelach. Problem polega na tym, że wygenerowany panel admina w symfony nie wyświetla mi id_marki ani id_kategorii podczas edycji - wyświetla się tylko opis. Ogólnie symfony nie wyświetla kluczy obcych podczas edycji, ale w tym przypadku muszę mieć możliwość ich edycji bo nie są to wartości autoincrement - jeśli ich nie podam, to nawet nie mogę wstawić wiersza do bazy. Aby wyświetlić te pola próbowałem już chyb wszystkiego co mi przyszło do głowy. Jedyne rozwiązanie jakie przychodzi mi do głowy to ręczne stworzenie partiali z tymi dwoma polami, ale przecież musi być jakaś możliwość wyświetlenia tych pól z automatu. Będę wdzięczny za pomoc. (ps. display: [id_marki, id_kategorii, opis] oczywiście nie działa) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Ten generator to dla mnie jeszcze czarna magia, ale mogę Ci poradzić, żebyś zobaczył, jaką metodą pobierane są rekordy. Jeśli masz zdefiniowane klucze obce, to tabela w której definiowałeś ma metody podobne to tej:
Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Napisz jeszcze, z którego modelu korzystasz w generatorze, marki, kategorii czy jednak tego, którego tabele tutaj podałeś.
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
wydaje mi się, że przyczyna nie leży w metodzie pobierania danych, tylko w sposobie budowania panelu admina - po prostu pola, które są kluczami podstawowymi tabeli domyślnie nie są edytowalne - jest to nawet napisane w książce, tyle tylko, że nie napisali (a przynajmniej nie mogę znaleźć) jak je odblokować do edycji. Pokaże może nad czym konkretnie się głowie. To jest moja tabelka. Jak widać są tam 2 klucze obce, które razem dają mi klucz podstawowy tabeli. Gdyby był to klucz autoincrement, to nie ma problemu, bo sam by się ustawiał, ale w moim przypadku tak nie jest i muszę go móc ustawić ręcznie.
Tymczasem mój panel admina dla tej tabelki wygląda tak: http://athabus.wrzuta.pl/obraz/hYsfRYqAZA/zrzut Czyli w ogóle nie są wyświetlane pola składające się na klucz podstaowy. Próbowałem zmusić symfony do wyświetlania tych pól w config.yml, tak jak poniżej, ale nic to nie daje... Cytat generator: class: sfPropelAdminGenerator param: model_class: BrandContextDescription theme: default edit: display: [brand_id, shop_menu_position_id, description] fields: brand_id:{ params: disabled=false } @destroyerr - w generatorze mam model do każdej tabeli, także to raczej nie to. Może ktoś ma jakieś pomysły, bo już na głowę z tym dostaje. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
no ba! Ja też odpadam ;p
Mam podobny problem, tylko ja chcę wyświetlić nazwy dostepnych kategori zamiast ich ID przy edycji (select tag) Mam metodę getCategoryName(), założone klucze obce etc i ni cholery nie umiem zmusić tego do działania. Pozdrawiam -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
a próbowałeś dodać metodę __toString w modelu. Jeśli masz klucze obce to w tym "obcym" obiekcie dodaj się metodę __toString() i powinno śmigać, jeśli dobrze rozumiem twój problem.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Dzięki, rzeczywiście od razu zadziałało ;p
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Ok, dobra. Problem zrozumiałem, ale nie wiedziałem, w którym kontrolerze chcesz to edytować
![]() Uważam, że lepiej byłoby dodać pole id. Może Cię przekona: http://ruby-rails.pl/rails-10-przykazan/#schemat_2 Ten post edytował destroyerr 7.03.2008, 12:17:22 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Dzięki destroyerr,
właśnie tego chciałem uniknąć, ale się poddałem, dołożyłem pole id, stary klucz zmieniłem na unique. Trochę mi się nie podoba to rozwiązanie, ale taki urok ORM'ów i frameworków w ogóle. Wymyśliłem / znalazłem jeszcze kilka rozwiązań, może kiedyś się komuś przydadzą: - można stworzyć partiale z odpowiednimi formularzami i nadpisać metodę updateFromRequest - można dodać "fikcyjne metody" będące nakładkami na właściwe metody w modelu typu setCustomBrandId() i wymusić ich stosowanie w generatorze - znalazłem też to o zmianie templata o czym pisał destroyerr - ktoś na forum symfony poradził mi, abym zastosował CRUD - pewnie tam można edytować klucze, ale nie sprawdzałem, bo w moim przypadku CRUD będzie miał zbyt małą funkcjonalność Wszystkie wyżej opisane metody są niezbyt eleganckie i chyba jednak najmniejszym złem będzie utworzenie osobnego pola dla klucza. Mimo wszystko ograniczenie co do wyświetlania pola z kluczem podstawowym wydaje mi się co najmniej dziwne, bo technicznie nic nie stoi na przeszkodzie edycji takiego pola jeśli nie jest on automatycznie inkrementowane - dla mnie jest to ewidentny bug. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 3 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
a próbowałeś dodać metodę __toString w modelu. Jeśli masz klucze obce to w tym "obcym" obiekcie dodaj się metodę __toString() i powinno śmigać, jeśli dobrze rozumiem twój problem. jest też inna możliwość. w admin generatorze: Kod pole_id: { type: select_tag, params: text_method=getName } w zwykłym formularzu: Kod <?php echo object_select_tag($obiekt, 'getPoleId', array (
'text_method' => 'getName', 'related_class' => 'klasa', 'include_blank' => true, )) ?> -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:28 |