![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mama mały problem
Chodzi o taki przypadek gdzie w widoku generuje sobie jakieś kontrolki (nie korzystam z Zend_Form bo dekoratory doprowadzają mnie do białej gorączki) pola select, checkbox-y itd. i teraz po wybraniu/kliknięciu mogę uruchomić jakąś akcje + przesłać parametry do akcji ale co z tego skoro z poziomu akcji nie mogę zmodyfikować stanu tych kontrolek np. nowe elementy w "selekcie" odhaczenie checbox-a itd. korzystając z mogę dodać element ale nie mogę zmienić jego stanu/zmodyfikować go np. dostaję komunikat Cytat Notice: Indirect modification of overloaded property co zrobić w takiej sytuacji? w jaki sposób można modyfikować stan kontrolek? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 6 Dołączył: 22.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
dostaje: Cytat Fatal error: Call to a member function setChecked() on a non-object w jaki sposób inaczej można rozwiązać tego typu problem? czy może z poziomu kontrolera nie da się modyfikować kontrolek?? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że tego nie zrobisz. Jak nie używasz Zend_Form, to nie będzie tak łatwo. Jedyne co mi przychodzi do głowy, to zrobić jakąś zmienną typu bool, którą będziesz przekazywać do widoku, a w widoku zrobisz if'a. Jeśli true, to robisz, że zaznaczone, jeśli nie, to nie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tego się właśnie obawiałem:/ pozostaje jeszcze pokombinowanie z view helperem. Najłatwiej by było użyć Zend_Form ale nie znalazłem działającego sposobu aby uzyskać czysty element np. checkbox po wyrenderowaniu żeby wyglądał tak:
może ktoś na forum się z tym już uporał? przez to obudowywanie elementów stosem niepotrzebnych mi tagów wszystko się rozjeżdża. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat nie korzystam z Zend_Form bo dekoratory doprowadzają mnie do białej gorączki Nikt nie każe ich używać. Użyj własnego widoku, w którym wykorzystasz formularz jako model danych, masz przecież metody typu ->getLabel więc nie widzę problemu by zrobić:
Inaczej będziesz musiał sam wszystko robić ręcznie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
No ok szukam info o wykorzystaniu własnego "szablonu" przy tworzeniu formularza za pomocą Zend_Form na razie bez większych sukcesów, ale pojawił się inny problem mam taką formę z samym checkbox-em:
teraz w kontrolerze tworze instancje formy i dodaje ją do widoku:
No i tutaj pojawiają się schody bo w widoku zależnie od sytuacji generuje w pętli odpowiednią ilość checkbox, tyle tylko że każdy będzie miał taką samą nazwę i id;/ czyli nie będę miał nad nimi kontroli. Pomyślałem żaden problem wygeneruje tablicę checkbox w kontrolerze i przekaże ją do widoku - i znowu zonk nie nie mogę zmienić id i nazwy formy według potrzeb nawet przy jej tworzeniu w kontrolerze - dostaje elementy z tą samą nazwą "check" tak jak zdefiniowana w klasie Form. Jak podejść do takiego zagadnienia? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Musisz do Form przekazać ile chceckboxów będziesz tworzył i tam wygenerować każdy z nich osobno.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Musisz do Form przekazać ile chceckboxów będziesz tworzył i tam wygenerować każdy z nich osobno. przy tworzeniu instancji klasy Form?? mówisz o czymś takim:
musiał bym przekazać ilość checkbox i ich nazwy.... coś takiego działa tylko nie wiem czy to ma sens??
czyli tworze w kontrolerze odpowiednią ilość form i przekazuje do widoku jako tablicę Dobra jednak to niema sensu (IMG:style_emoticons/default/biggrin.gif) kombinuje dalej.. No dobra mam coś takiego:
Trochę dziwne toto ale działa tak że dostaje tablice Form "check", dostęp do poszczególnych obiektów (mimo że są identyczne i nazywają się "check") mam dzięki tablicy... co o tym myślicie? przekombinowałem? Ten post edytował phpmack 26.11.2011, 16:55:37 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Masz działać tak:
1. Utworzyć formularz 2. W kontrolerze go wywołać i obsłużyć, ewentualnie zmodyfikować (jeśli jest taka potrzeba, by formularz tworzyć dynamicznie) 3. Przekazać cały formularz do widoku 4. Użyć tego formularza w widoku, ale nie przez echo $this->form tylko rozbijając na poszczególne elementy tak, by uzyskać planowany efekt HTML Czyli zacznij od wyświetlenia całego formularza przez echo $this->form a jeśli wszystko będzie działać jak należy to wystarczy Tobie zmodyfikować widok, w którym będziesz ten formularz wyświetlał. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze jedna sprawa, utworzyłem formularz w kontrolerze i przekazałem do widoku (formularz składa się jedynie z elementów checkbox) mogę go modyfikować sprawdzić stan "czy zaznaczony" itd. ale z braku "guziczka" submit nie jestem w stanie odebrać danych z tego formularza? mogę klikać te checkbox-y w nieskończoność ale one nie przesyłają żadnych danych, co z tym zrobić(IMG:style_emoticons/default/questionmark.gif) ?
Ten post edytował phpmack 26.11.2011, 18:11:40 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a w kontrolerze wywołujesz
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dodać do checkboxa onclick event: Nie wiem czy takie rozwiązanie Ciebie interesuje. Bardzo głupie rozwiązanie. @phpmack chce mieć 10 checkbox ów i jak zaznaczy 1 to od razu mu wyśle formularz. A co jak będzie chciał więcej niż jeden zaznaczyć (IMG:style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
O tym nie pisał,to taki autopost po kliknięciu na checkbox.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
a w kontrolerze wywołujesz
Skorzystałem z tego pomysłu i generuje sobie elementy formy na podstawie przekazanej tablicy elementów od razu ustawiam nazwy poszczególnych checkbox itd. rewela ale dlaczego gdy na stronie wyświetlane są jednoczenie dwa formularze to po kliknięciu na jakikolwiek "submit" wysyła mi wszystkie formularze? Nadałem elementom "submit" w formularzach unikalne nazwy i teraz w akcji sprawdzam który został użyty:
ale to zabezpiecza tylko przed przedwczesną walidacją bo dalej gdy odbieram dane z POST to po wykonaniu:
czyści mi dane ze wszystkich jednocześnie wyświetlanych formularzy Może jeszcze opisze mój problem;) A więc jeden formularz z checkbox-ami wyświetlam na stronie cały czas używam go do aktywowania urządzeń czyli generuje sobie listę urządzeń a za pomocą pól chechbox włączam lub wyłączam urządzenia. Wszystko ok do momentu kiedy na stronie pojawi się drugi formularz np. dodawanie nowego urządzenia do bazy bo po wykonaniu go kasuje mi wszystkie checkbox-y. Można coś z tym zrobić? Ten post edytował phpmack 26.11.2011, 22:16:14 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dzieje się tak dlatego że masz ustawiony parametr action taki sam dla obu formularzy (zapewne pusty).
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 08:13 |