Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] zmienia " na &quot ; przy wyświetlaniu skryptów
Forum PHP.pl > Forum > PHP > Frameworki
kaniagandzowski
Mam w symfony (symfony 1.2.1) klasę, która generuje js i formularz (moja klasa). W templatce jest polecenie wyświetlenia JS i tego formularza.
  1. //template/indexSuccess.php
  2. <h1>Testy</h1>
  3. <?php
  4.  
  5.        echo $uplfile->InitJs();
  6.  
  7.        echo $uplfile->GenForm();
  8.        
  9.        echo $uplfile->GenElmWithFilesData();  
  10. ?>

Zmiena $uplfile->InitJs(); zawiera skrypt JS w formie zwykłego tekstu

  1. <?php
  2. $ret .='<script type="text/javascript">
  3.            var sUploadFormId=''.$this->uploadFormId.'';
  4.            var iMixedFormVer='.$this->mixedForm.';
  5.            var sUploadScriptPath=''.$this->uploadScriptPath.'';
  6.            var sIdFilesDataElm=''.$this->filesDataElm.'';
  7.            
  8.            
  9.            var textes = new Array();
  10.            textes[0]="Wystapil nieoczekiwany blad";
  11.            textes[1]="Wskazano za duzy plik";
  12.            textes[2]="Nie wskazano pola docelowego dodawanych plikow";
  13.            textes[3]="Nie mozesz dodac wiecej plikow";
  14.            textes[4]="Wybierz plik";
  15.            '."\n";
  16. ?>

A w przeglądarce on jest wyświetlany. A nie powinien się wyświetlić tylko wykonać
  1. &lt;script type=&quot;text/javascript&quot;&gt;
  2. var sUploadFormId='adminForm';
  3. var iMixedFormVer='1';
  4. var sUploadScriptPath='http://localhost/PartyTime.pl//lib/async_upload/async_upload_server.php';
  5. var sIdFilesDataElm='files_data';
  6.  
  7.  
  8. var textes = new Array();
  9. textes[0]=&quot;Wystapil nieoczekiwany blad&quot;;
  10. textes[1]=&quot;Wskazano za duzy plik&quot;;
  11. textes[2]=&quot;Nie wskazano pola docelowego dodawanych plikow&quot;;
  12. textes[3]=&quot;Nie mozesz dodac wiecej plikow&quot;;
  13. textes[4]=&quot;Wybierz plik&quot;;


To samo jest z html formularza, który posiada pola input, select

Widać, że zostają po zamieniane znaki " na &quot ;

Dodam, że wszędzie używam kodowania UTF-8. W zendzie oraz w templatce ustawione jest na UTF-8
destroyerr
Tak się dzieje bo symfony dba o bezpieczeństwo. Sprawdź, obiektem jakiej klasy jest $uplfile.
Jeśli ten obiekt przekazujesz w akcji to wystarczy zrobić go bezpiecznym:
  1. <?php
  2. $this->setVar('uplfile', $uplfile, true);
  3. ?>

Wtedy obiekt (konkretnie to co zwracają jego metody) nie będzie escapowane.
Możesz też zrobić to w widoku poprzez wywołanie Twojej metody z odpowiednim parametrem. Szczegóły tutaj.
kaniagandzowski
Dziękuje za pomoc. Pomogło.
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.