Article View: pl.comp.lang.php
Article #231184php i xajax z klasy
From: marcin
Date: Tue, 17 Nov 2015 10:41
Date: Tue, 17 Nov 2015 10:41
73 lines
3678 bytes
3678 bytes
Witam
Piszę mały dodatek do projektu lms (https://github.com/lmsgit/lms) w postaci pluginu, który jest rejestrowany za pomocą hook'ów. podczas wykonywania index.php łapie "moduł" z modules i są tam hooki które mogę zarejestrować własne klasy. mogę również stworzyć pliki swoich modułów.
Jeśli wczutuje swój cały moduł bez wykorzystania hooków z core (?m=mojmodul) to moduł mój pisze do smarty, rejestruję w nim funkcje xajax i to działa. Generalnie funkcja dla xajaxa jest napisana bezpośrednio w pliku modułu, który odapalany jest bezpośrednio.
problem jest jeśli rejestruję funkcję dla xajaxa w wywoływanej klasie z hooka. docelowo w kodzie html pojawia się wpis xajaxowy o zarejestrowanej funkcji, wywołanie skutkuje postem ale nie ma żadnej odpowiedzi :/
fragmenty kodu:
wywoływany hook z defaultowego modułu customerinfo
#v+
$hook_data = $LMS->executeHook(
'customerinfo_before_display',
array(
'customerinfo' => $customerinfo,
'smarty' => $SMARTY,
)
);
$customerinfo = $hook_data['customerinfo'];
#v-
Ja w swoim pluginie przechwytuję i rejestruję swoją funkcję:
#v+
'customerinfo_before_display' => array(
'class' => 'EvioCustomerList',
'method' => 'stbCustomerInfo')
#v-
teraz clasa ta wygląda tak:
#v+
class EvioCustomerList {
protected $stb;
public function __construct() {
$this->stb = Evio::get_conn();
}
public function doAdd($a, $b)
{
$response = new xajaxResponse();
$response->assign('infotag', 'innerHTML', $a + $b);
return $response;
}
public function stbCustomerInfo(array $hook_data) {
global $SMARTY, $LMS;
try {
$res = $this->stb->getUserStb($hook_data['customerinfo']['id']);
$LMS->InitXajax();
$LMS->RegisterXajaxFunction(array('doAdd'));
$SMARTY->assign('xajax', $LMS->RunXajax());
$SMARTY->assign('stb',$res);
} catch (Exception $e) {
error_log($e);
die();
}
return $hook_data;
}
}
#v-
specjalnie rejestruje prostą funkcję dla xajaxa tylko po to by sprawdzić odpowiedzi.
w kodzie html funkcję tą wywołuję:
#v+
... onclick="xajax_doAdd(1,4);" ...
#v-
niestety nie działa. firebug pokazuje, że funkcja odpytuje się ?m=customerinfo&id=321 ale nie ma żadnej odpowiedzi.
podpowiedzcie jak rozwiązać ten problem, bo męczę się już kolejny dzień i nie działa. w module odpalanym bezpośrednio działa od kliknięcia a z klas niestety nie?
z góry dzieki za pomoc
Technical Details
Message-ID:
<bbd417cc-5df5-4486-a3e2-48b732137f81@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!i2no4279442igv.0!news-out.google.com!l1ni371igd.0!nntp.google.com!i2no4177136igv.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 10.182.68.113 with SMTP id v17mr1528094obt.2.1447756880035; Tue, 17 Nov 2015 02:41:20 -0800 (PST) X-Received: by 10.50.98.67 with SMTP id eg3mr28272igb.1.1447756879979; Tue, 17 Nov 2015 02:41:19 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!i2no4279442igv.0!news-out.google.com!l1ni371igd.0!nntp.google.com!i2no4177136igv.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.php Date: Tue, 17 Nov 2015 02:41:19 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=193.59.33.10; posting-account=vC6_ewoAAADzmxr7l9tz-2nMlykNkrb2 NNTP-Posting-Host: 193.59.33.10 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <bbd417cc-5df5-4486-a3e2-48b732137f81@googlegroups.com> Subject: php i xajax z klasy From: marcin@nicram.net Injection-Date: Tue, 17 Nov 2015 10:41:19 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit