Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [symfony]validacja formularzy "ajaxowych"
Forum PHP.pl > Forum > PHP > Frameworki
enigma
Witam smile.gif
Tworząc proste formularze (bez AJAX'a) walidacja przebiega normalnie. To znaczy kod
  1. <?php echo form_error('name') ?>

"wyciąga" poprawnie tekst z plików .yml
jednak gdy używam formularzy AJAX'owych (napisanych osobiście lub też używając sfYzAjaxValidationPlugin), i formularz zwróci błędy zamiast polskich znaków mam krzaki
Tylko proszę nie pisać żebym użył ISO-8859-2 tongue.gif
Pozdrawiam smile.gif
mike
Cytat(enigma @ 20.10.2007, 11:40:56 ) *
Tylko proszę nie pisać żebym użył ISO-8859-2 tongue.gif
A ja myślę że może właśnie używasz tego kodowania.
W symfony wszystko jedzie domyślnie na UTF-8, może masz coś inaczej? Sprawdź pliki.

Firebug pomoże CI też sprawdzić jakie nagłówki dostajesz. Może coś jest źle puszczane do przeglądarki.
enigma
hmm, w tym co pokazuje Firebug szukałem iso i nie ma
w zakładce HTML kodowanie mam
  1. <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>


w zakładce SCRIPT
Kod
Ajax.Base.prototype = {
805 setOptions: function(options) {
806 this.options = {
807 method: 'post',
808 asynchronous: true,
809 contentType: 'application/x-www-form-urlencoded',
810 encoding: 'UTF-8',


więc nie wiem co jest grane, tym bardziej że tak jak pisałem wcześniej bez AJAX'a nie było krzaków
plików konfiguracyjnych nie zmieniałem

kurcze pieczone tongue.gif ja to zawsze musze mieć jakieś dziwne problemy winksmiley.jpg


EDIT
a tam gdzie mi krzaczy Firebug w zakładce NET pokazuje
Kod
Response Headers
Date    Sat, 20 Oct 2007 11:48:24 GMT
Server    Apache/2.2.3 (Ubuntu) PHP/5.2.1
X-Powered-By    PHP/5.2.1
Expires    Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control    no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma    no-cache
X-Json    ([['error_for_name',' &darr;&nbsp;Muisz podać tag &nbsp;&darr;']])
Content-Length    0
Connection    close
Content-Type    text/html; charset=UTF-8
joohn
Co prawda odświeżam stary temat, ale komuś jeszcze może się to przydać winksmiley.jpg

Kod który zwraca headera z JSONem musi wyglądać tak:
  1. <?php
  2. $this->getResponse()->setHttpHeader("X-JSON",json_encode($output));
  3. return sfView::HEADER_ONLY;
  4. ?>


Gdzie $output to po prostu tablica mogąca zawierać znaki w utf.
Jeżeli odpowiedź JSON jest budowana jako string w postaci ["aaa","bbb"], wtedy pokażą się krzaki.

Pozdrawiam
imblue
Co prawda też odświeżę temat, ale ze względu że nie znalazłem w google praktycznego przykładu a widzę że wiele osób ma problem z krzakami.

Przykładowa funkcja pobierająca tytuł:
  1. <?php
  2. public function executeTitlelink()
  3. {
  4.    ...
  5.    $this->getResponse()->setHttpHeader('Content-Type','text/x-json; charset=UTF-8');
  6.    $output = array("title_i18n_pl" => $page->getTitlePl(), "title_i18n_en" => $page->getTitleEn());
  7.    return $this->renderText(json_encode($output));
  8. }
  9. ?>

W template wczytujemy do inputa poprzez link:
  1. <?php
  2. echo link_to_remote(__('Pobierz'), array(
  3.    'url' => 'categories/titlelink', ...
  4.    'complete' => "var data = (request.responseText.evalJSON());
  5.                   $('categories_title_i18n_pl').value = data['title_i18n_pl'];
  6.                   $('categories_title_i18n_en').value = data['title_i18n_en']"
  7.    ))
  8. ?>

Czyli używamy tylko php'owe json_encode i evalJSON (zwykle eval javascript'owe nie działa w tym przypadku a request to pierwszy paramet funkcji onComplete) i możemy przekazywać tablice zmiennych. Oczywiście dotyczy to php >= 5.2 i prototypejs 1.5.1, no i zakładając że mamy wszędzie dobrze poustawiane kodowanie na UTF-8.

Pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.