Coach
8.09.2009, 08:22:07
Problem być może jest trywialny.
Chodzi o to, iż często spotykam się z sytuacją, gdzie muszę z poziomu php przekazać sobie kilka zmiennych opisujących dany znacznik, które potem będę używał w js.
Przykładowo:
- mam pole input i chcę przekazać informacje o sposobie walidacji (typ_walidacji, min_dlugosc, max_dlugosc, komunikat_bledu).
- mam pole select i zestaw opcji, chcę w opcjach schować informację umożliwiające po naciśnięciu przycisku ułożenie ich w drzewko.
I tu pytanie - jaki kod html stworzyć w php, by te zmienne sobie schować, nie naprodukować zbędnego kodu html albo nie spowolnić zbytnio strony, i by były dostępne z poziomu DOM we wszystkich przeglądarkach?
Aktualnie dane serializuję i chowam w rzadko używanym lang, natomiast denerwuje mnie używanie czegoś niezgodnie z przeznaczeniem.
Chowanie zmiennych w polu #id mija się z celem i przeznaczeniem identyfikatora.
Dodawanie class jest dobre na flagi, ale nie na stringi, do tego może narobić bałaganu w cssach.
Produkowanie dla każdego znacznika sparowanego hiddena to przsadna nadmiarowość.
Problem, sądzę, jest na tyle powszechny, że musi istnieć prawidłowe i dedykowane jego rozwiązanie, bez zbędnej kombinatoryki.
Będę wdzieczny za sugestie.
Master Pain
8.09.2009, 08:48:26
Zrób sobie 'namespace' (przestrzeń nazw, umownie oczywiście, bo chodzi o lekką modyfikację nazewnictwa klas dla uniknięcia konfliktu z klasami odpowiedzialnymi za wygląd strony) dla klas, np. 'desc-min-width', gdzie 'desc' to właśnie ta umowna przestrzeń nazw. Tak np. sprawę załatwia lightbox w jQuery, ma swoje 'przedrostki' w nazwach klas, zatem można uznać to za prawidłowe i dedykowane rozwiązanie

Pozdrawiam!
Coach
8.09.2009, 10:04:04
Ok, czyli jeśli chcę zapisać sobie informację, iż typ walidacji to znaki alfanumeryczne mogę nadać klasę desc-alphanr. To ok i użyteczne
bo od razu daje użyteczny i zależny od typu selektor do przyszłych zastosowań.
Jeśli chcę zapisać, że minimalna długość to 5 znaków to użyję klasy desc-min_5, by się do tego dobrać muszę wyciągnąć całe className,
explodować klasy, wyszukać tę zaczynającą się na desc-min, explodować po _ i dopiero mam wartość - tu już trochę roboty jest.
Zmienna string (po odpowiednim podmienieniu spacji i znaków specjalnych) da już klasę-potworka.
Jak nagromadzenie klas w elemencie wpłynie na wydajność? Prędkość interpretacji css, jQuery które musi
te wszystkie nadmiarowe selektory sprawdzać, to może nieco spowolnić?
Master Pain
8.09.2009, 10:07:37
Ale ten explode po klasach robisz tylko raz i masz wszystko w tablicy. W czym problem

A wydajność... no cóż, sam chciałeś takie rozwiązanie. Trochę nie na temat, ale nie lepiej użyć Zend_Form ?
Pozdrawiam!
Cytat
I tu pytanie - jaki kod html stworzyć w php, by te zmienne sobie schować, nie naprodukować zbędnego kodu html albo nie spowolnić zbytnio strony, i by były dostępne z poziomu DOM we wszystkich przeglądarkach?
JSON. Do jQuery był jeszcze taki plugin, który przechowywał metadane w atrybutach
class. ;]
Moim zdaniem, najlepszy tu będzie JSON - interplatformowy, radzą sobie wszystkie przeglądarki, PHP również.