Zend Framework umożliwia specjalizację finalnego widoku(layoutu) dla każdej z akcji poprzez tzw. helpery("pomocniki") widoku. Jak to się dzieje odsyłam do podręcznika.
Wszystko działało idealnie do dnia gdy nadeszła chwila integracji stronki z Google Maps API.
W widoku akcji korzystam z wymiotnego w temacie pomocnika:
$this->headScript()
->appendFile('http://maps.google.com/maps?file=api&v=2&key='.$this->apiKey);
nagłówek strony produkuje mi coś takiego:
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAnCqO9l1WMOgTCJlg9kVlMRREqxHjot-MVdGv4W7rNtdAWxNh4hS2-gRBnLrWFzhAC8SpBzYmGVYZgA" type="text/javascript"/>
a powinien
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAnCqO9l1WMOgTCJlg9kVlMRREqxHjot-MVdGv4W7rNtdAWxNh4hS2-gRBnLrWFzhAC8SpBzYmGVYZgA" type="text/javascript"></script>
jak łatwo zauważyć problem leży w & -> &.
Inicjowanie map googla tej zmiany nie lubi. Problem tkwi w funkcji htmlspecialchars, użytej w Zend_View_Helper_HeadScript::append() itd.
Żeby nie ingerować w kod w/w klasy można zastosować funkcję htmlspecialchars_decode w szablonie w następujący sposób...
// & -> & becouse gmaps crash!
print htmlspecialchars_decode($this->headScript());
.. i wszystko działa, tak jak powinno od samego początku.
(Zastanawiam się czy ZF nie jest aż nad to ostrożny w wszystkim [ma to plusy .. i minusy])
Pozdrawiam.
Pokazywanie postów oznaczonych etykietą dochodzenie. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą dochodzenie. Pokaż wszystkie posty
środa, 12 listopada 2008
Zend_View_Helper_HeadScript->appendFile() psuje integrację z Google Maps API
Etykiety:
dochodzenie,
php,
zagadki,
zend framework
niedziela, 24 lutego 2008
HTTPRequest.asyncPost
Etykiety:
dochodzenie,
gwt,
java,
php
Nie myślałem że trzeba się tak natrudzić by wysłać dane POST z poprawnymi nagłówkami.
Dokumentacja mówi:
asyncPost(java.lang.String url, java.lang.String postData, ResponseTextHandler handler)Zastosowanie trywialne ..
Makes an asynchronous HTTP POST to a remote server.
HTTPRequest.asyncPost("http://example.pl","id=2",new MyResponseTextHandler());..prawie, bo żadne dane nie zostały przesłane.
Firebug pokazuję jakie dane POST zostały wysłane (nie do w/w przykładu):


Nie ma tego złego bo nauczyłem się generować JSON w GWT :)
Google.pl pomogły znaleźć rozwiązanie - linkwystarczy dodać w kodzie php takie 2 linie kodu i wszystko działa :)
$postData = array();
parse_str(file_get_contents('php://input'), $postData);
Subskrybuj:
Posty (Atom)