Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapis konfiguracji, formularz, użyć klasy / funkcji?
WebCM
post 14.09.2007, 20:53:39
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Zabieram się za tworzenie nowego interfejsu do zapisu konfiguracji w CMS-ie.
http://phpproblem.gourl.org

Niektóre dane wymagają obróbki, więc nie mogę zapisać bezpośrednio danych z $_POST:
Kod
funkcja_zapisu($_POST)

Można rozwiązać problem w ten sposób:
Kod
$_POST['dane'] = Clean($_POST['dane']); //Clean = funkcja jądra skryptu

Myślę, że lepiej zdefiniować, jakie wartości mogą zapisać się (int, tekst, itd.) w poszczególnych opcjach mimo tego, że dostęp do konfiguracji właściciele stron mogą przydzielać tylko wybranym osobom lub grupom. Niestety, będzie znacznie więcej kodu (ponad opcji w "ogólnych").

Co o tym myślicie?

Jeżeli definiowałoby się każdą opcję do zapisu, formularz można generować dynamicznie (sposób trochę wolniejszy, ale mniej kodu i może przejrzyściej). Problem w tym, że są różne typy pól:
- checkbox
- radio (kilka pozycji dla tej samej opcji)
- select (opcje <option> często generują inne funkcje, wywalając gotowy kod)
- input (szeroki na tekst bądź wąski na liczbę)

Jak więc generować taki formularz z opcjami konfiguracyjnymi? Chyba, że lepiej pozostać przy statycznych formularzach, aby nie komplikować sytuacji i nie ograniczać możliwości wstawiania kodu.

PS. Dane zapisywane są do plików .php.


--------------------
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
Go to the top of the page
+Quote Post
.radex
post 15.09.2007, 17:26:31
Post #2





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


w tej funkcji Funkcja_zapisu, możesz dać pętlę która będzie się wykonywała count($argument) razy i będzie Clean()'owała $argument[$i]. Jednak to bez sensu, bo niektóre dane mogą być innego typu niż tylko string, a bez sensu dawać w drugim argumencie array'a z typami pokolei... Myślę że warto dać możliwość dodawania pól. Trochę w tym roboty, ale możesz dać, jeśli to jest w mysql, w drugiej kolumnie typ. itd. Statyczne formularze to trochę przeszłość - mała elastyczność.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
WebCM
post 15.09.2007, 22:28:03
Post #3





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


W statycznych formularzach nie ograniczasz możliwości jak w dynamicznych. Jak stworzyłbyś kod zarówno generujący formularz z opcjami jak i zapisujący konfigurację (coś w stylu pliku definicji)?

Przykład:
  1. <?php
  2. $form -> checkbox('nazwa_pola', 50, 'int'); //50 = maxlength
  3. $form -> text('nazwa_pola2', 'clean');
  4. ?>
Powyższe rozwiązanie jest nieelastyczne choćby z tego względu, że niektóre pola wymagają np. dodania atrybutów (ID, size), zdarzeń... nie mówiąc o "radio" i <select>. Rozwiązaniem jest użycie np. trzeciego argumentu funkcji jako tablicy z właściwościami bądź:
  1. <?php
  2. $f = $form->checkbox(...);
  3. $f -> id = 'obraz';
  4. $f -> label = 'Etykieta:';
  5. $f -> content = '...'; //np. dla <select>
  6. ?>
Też ogranicza możliwości i jest wolne przy dużej ilości pól.

Kwestię formularzy z opcjami pozostawię na później. Na razie chyba pola formularza będą miały nazwy: o[nazwa_opcji]:
Kod
<input name="o[title]" />
Nie powinno raczej to wpłynąć na wydajność, chyba że się mylę.

Jakie są wasze zdania na ten temat?

Ten post edytował WebCM 15.09.2007, 22:29:08


--------------------
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:11