Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: XAJAX + SMARTY
Forum PHP.pl > Forum > XML, AJAX > AJAX
mc0314
WITAM

O AJAXIE przeczytałem dość niedawno, duzo pracuje w Smarty i chciałbym połączyć nowo poznaną technologie

wyczytalem . coś takiego:
Cytat
"Xajax to jedna z "bibliotek" łączących php z AJAXem. Biblioteki takie można podzielić na dwie grupy - zorientowane pod JavaScript i zorientowane pod php. XAJAX należy do tej drugiej grupy, dzięki czemu ilość kodu Javascript w naszych skryptach będzie minimalna."


za nic w świecie nie moge zrobić nawet najprostrzego przykładu xajax + smarty:(

google przeszukane cale sad.gif

Czy uzyskam tu jakąkolwiek pomoc??

a może coś innego nix XAJAX do SMARTY (ale zorientowane pod php)

POZDRAWIAM SERDECZNIE
squid
jest HTML_AJAX z PEAR
Problem przy wykorzystaniu smarty polega na tym ze to smartyu powinno zajac sie wyswietlaniem (rowniez) JS stworzonego w innych bibliotekach wiec najpiej jest znalezc taka ktora pozwala wygenerowac JS i zapisac do zmiennej taki kod dzieki czemu w smarty bedziesz mogl zrobic tak:
  1. <script>{$to-jest _skrypt}</script>

Smarty tez nadaje sie swietnie do tworzenia odpowiedzi dla wywolan javasriptu, poprostu zamist HTML tworzysz XML
  1. <?xml ...?>
  2. <response>
  3.    {$twoje_odpowiedz_serwera}
  4. </respone>
SebastianSerafin
Witam
Też próbowałem połączyć te dwie klasy(Smarty i xajax) i przed chwilą przeczytałem post i wpadł mi pomysł a, że kod warty jest tysiąca słów oto i on:
  1. <?php
  2. $xajax->printJavascript('../'); 
  3. $skrypt = ob_get_contents();
  4.  
  5. $smarty->assign( 'skrypt',$skrypt);
  6. ?>


a szablon smartiego:
  1. <title>xajax example</title>
  2. {$skrypt}
  3. </head>


Skorzystałem z funkcji ob" title="Zobacz w manualu php" target="_manual by uzyskać potrzebny do wklejenie kod. Nie ma chyba co wiecej tłumaczyć, Poprosze o skomentowanie mojej metody.
Pozdrawiam
cyphelf
Prościej będzie tak:

  1. <?php
  2. $smarty->assign( 'skrypt', $xajax->getJavascript('../'));
  3. ?>
jarrod
A jaką otrzymaujesz odpowiedź z serwera?

Pamiętaj że ważna jest kolejność wywoływania metod XAJAX.

Najpier rejestrujesz funkcje:

  1. <?php
  2. $ajax->registerFunction('nazwa_funkcji');
  3. ?>

Jeżeli funkcja nie jest widzialna (tzn tyle samo co gdy funkcja function_exists('nazwa_funkcji') zwróci false) to nie zostanie ona zatejestrowana przez xajax-a.

Gdy zarejestrujesz swoje funkcje czas na metodę:
  1. <?php
  2. $ajax->processRequests();
  3. ?>


Bez niej nic ci się nie uda. Musi być wywołana po zarejestrowaniu funkcji ale przed wysłaniem nagłówków do przeglądarki.

Na końcu należy wydrukować kod js:
  1. <?php
  2. $ajax->printJavascript('sciezka_do_xajaxa/ajax/');
  3. ?>


i umieść go w sekcji HEAD lub BODY strony (w zależności od wybranej deklaracji dokumentu).

Jeżeli ta kolejność będzie inna to nie licz na pozytywny efekt.

a teraz prosty przykład:

  1. <?php
  2. function testAjax($id)
  3. {
  4. $obj = new xajaxResponse();
  5.  
  6. $obj->addAlert('to jest n test xajaxa');
  7. $html = 'testuję ajaxa ;)';
  8. $obj->addAssign($id,'innerHTML',$html);
  9. $obj->addAssign($id,'style.border','1px #c00 solid');
  10. return $obj;
  11. }
  12.  
  13. $ajax = new xajax();
  14. $ajax->registerFunction('testAjax');
  15. $ajax->processRequests();
  16.  
  17. $this->ajax->printJavascript('lib/ajax/');
  18. $initAjax = ob_get_contents();
  19.  
  20.  
  21. $smarty = new Smarty();
  22. $smarty->assign(array(
  23. 'TEXT1' => 'testujemy x-ajaxa',
  24. 'initAjax' => $initAjax
  25. ));
  26.  
  27. $ret= $smarty->fetch('templ.tpl','templ','templ',false);
  28.  
  29. //wynik działania jest w zmiennej $ret. Możesz ją wykorzystać kiedy chcesz. 
  30. echo $ret;
  31. ?>


A teraz template:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Test ajaxa</title>
  5. <meta http-equiv="content-TYPE" content="text/html; charset=iso-8859-2"/>
  6. </head>
  7. <body xml:lang="pl">
  8. {$initAjax}
  9.  
  10. <div id="main">{$TEXT1}:
  11. <div id="content" style="display:none;"></div>
  12. </div>
  13. <span onclick="xajax_testAjax('content');">Testuj<span>
  14. </body></html>



Generalnie poczytaj dokumentację na stronie
http://wiki.xajaxproject.org/Documentation...esponse.inc.php

Pozdrawiam
mc0314
Śliczne dzięki za pomoc
SERDECZNIE WSZYSTKICH POOSTRAFFIAM winksmiley.jpg
szumigt
Cytat(jarrod @ 14.10.2006, 20:25:21 ) *
ob_start();
$this->ajax->printJavascript('lib/ajax/');
$initAjax = ob_get_contents();
ob_end_clean();


A jesli nie włącze tego kawałka kodu, to nie będzie trybić?? Ja dziś wykombinowałem taki sam kod ale bez tego fragmentu i właśnie cosik nie do końca mi to działa ... Różnica była tylko taka że nie podałem parametru dla printJavascript ale wcześniej skonfigurowałem ścieżke do AXJAX-a to chyba to samo. Ale o co chodzi z tym ob_get_contents ...
Acha jeszcze jedno dlaczego tam jest $this->ajax?? Nie powinno być poprostu $ajax questionmark.gif
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.