ďťż
Podstrony
|
telcocafeJest sporo problemów z analizą XHTML w PHP przez funkcje XML. Kilka już rozwiązałem, stosując różne tricki i obejścia. Jednak jest kolejny - jak pobrać wartość atrybutu z przestrzenią nazw? Wprawdzie można zrezygnować z namespace, lecz lepiej zaznaczyć w kodzie XHTML, że znacznik lub atrybut należy do dziedziny F3.<input type="checkbox" id="something" f3:var="config.item" /> foreach(xpath('//input[@id="ms"]') as $item) echo $item['f3:var'];Niestety, nie działa. Nawet $f3->item['var']. A może zastosowanie funkcji preg_* i str_* lepiej nadaje się do analizy kodu XHTML? Właściwie operacje na XML-u wykonuję tylko po to, aby odczytać wartości paru atrybutów, np. f3:var, z tym że: - jeśli znajdzie się w <form>, trzeba przejechać wszystkie pola: checkbox, radio i select i odczytać ich nazwy - gdy znajdzie się w tych polach - dotyczy tylko tych pól Trzeba potem jeszcze wstawić instrukcję warunkową. Za pomocą SimpleXML tylko pobieram kod pola do zamiany przez str_replace(), bo w XML-u tego raczej nie zrobię. Przykładowy wynik: <input type="checkbox" id="something" <?php if($config['item']) echo 'checked="checked" ';?>/> LUB: <?php if($config['item']) echo '<input type="checkbox" id="something" checked="checked" />'; else echo '<input type="checkbox" id="something" />'; ?> Właściwie zaletą parsera XML jest to, że wyrzuci błąd, gdy jakiś znacznik jest niezamknięty, lecz uruchamiam go dopiero wtedy, gdy znajduje się w szablonie choć 1 znacznik <form>. Może nie ma to nawet sensu? Użytkownik Ferrari edytował ten post 25 kwiecień 2008, 16:44 XML nie jest dla ludzi. Jeżeli dasz ludziom do edycji bądź tworzenia XML, jeszcze z atrybutami to od razu to skasują ;) Jedna z zasad Ruby on Rails to "No XML-files!" ;) <input type="checkbox" id="something" <?php if($config['item']) echo 'checked="checked" ';?>/> LUB: <?php if($config['item']) echo '<input type="checkbox" id="something" checked="checked" />'; else echo '<input type="checkbox" id="something" />'; ?> Jedno i drugie to pomyłka. Kod PHP przemieszany z kodem HTML. Popytaj się trochę na forum php.pl to ci odpiszą ile takie "rozwiązanie" jest warte. Kod PHP przemieszany z kodem HTML. Sugerujesz, że szablon powinien być przetwarzany podczas każdego żądania? Chyba lepiej skompilować go tylko 1 raz - czyli zrobić cache (a tam trzeba mieszać HTML z PHP), aby potem wystarczyło wywołać tylko include()? ;) Użytkownik Ferrari edytował ten post 25 kwiecień 2008, 21:02 chyba widziałeś jak działa np. smarty? jeżeli szablon się nie zmienia używany jest kesz - czyli "wersja PHP" szablonu. |
|||
Sitedesign by AltusUmbrae. |