Obsah návodu:
- Používanie REST API v JavaScript kóde (GET, POST, PUT, DELETE)
- Spustenie "backendovej" funkcie v JavaScript kóde pomocou RMI
- Zobrazenie výstupu RMI v modálnom okne
- Reťazenie viacerých XHR volaní
1) Používanie REST API v JavaScript kóde (GET, POST, PUT, DELETE)
- Použitie štandardných HTTP metód:
GET slúži na načítanie dát zo servera (read)
POST na vytvorenie nových záznamov (create)
PUT na aktualizáciu existujúcich záznamov (edit)
DELETE na mazanie záznamov
-
možné používať s modulmi, ktoré majú implementované rest_get(), rest_post(), rest_put() alebo rest_delete() funkcie
REST.get({
module: 'test',
arg1: 'arg1-value'
},
// Response OK
function (response) {
console.log(response);
},
// Error
function() {
REST.error(data)
});
TODO
TODO
2) Spustenie "backendovej" funkcie v JavaScript kóde pomocou RMI
- RMI (Remote Method Invocation) umožňuje spustiť funkciu bežiacu na serveri
- Funkcia na serveri musí byť public static
- Funkcia môže vráti dáta cez return() - bude dostupné v done() v objekte retval
- Funkcia môže generovať aj HTML obsah, prípadne iný výstup - ten bude dostupný v string premennej html
- Aktuálne prihlásený užívateľ musí mať právo na jej spustenie
- V prípade, že nastane chyba v komunikácii alebo pri vykonávaní funkcie, zobrazí sa notifikácia v pravom hornom rohu prehliadača
nge.io.Rmi.get({
module: 'test::myFunction', // trieda::funkcia
args: ['arg1_value', 'arg2_value'], // argumenty funkcie (ak ich funkcia vyzaduje)
params: { // (nepovinne) query parametre, budu pristupne cez $_GET
'param1': 'value1',
'param2': 'value2'
}
}).done(function (retval, html) {
console.log(html); // vypise HTML vygenerovane funkciou
console.log(retval); // vrati objekt s datami vratenymi prostrednictvom return ()
}).fail(function (message, code) {
nge.ui.error(message); // vypise chybu
});
<?php namespace nge;
class Test extends module
{
public function myFunction ($arg1, $arg2)
{
// Validate input
v::string($_GET['param1'], $param1, array('required' => true));
v::string($_GET['param1'], $param2, array('required' => false));
if (! v::isValid()) throw new BadRequestException('Invalid');
// Do or print something
// Return some data (optional)
return array(
'param1' => $param1,
'param2' => $param2,
'arg1' => $arg1,
'arg2' => $arg2
);
}
}
?>
{
"retval": {
"param1": "value1",
"param2": "value1",
"arg1": "arg1_value",
"arg2": "arg2_value"
},
"code": 200,
"status": "OK"
}
TODO
TODO
TODO