RMI a REST volania v JavaScriptovom kóde (frontend bez refreshov)

Návod popisuje spôsoby akými je možné používať v šablónach frontendu server-side funkcie, prípadne pracovať s databázou

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"
}
          

3) Zobrazenie výstupu RMI v modálnom okne

  • TODO

4) Reťazenie viacerých XHR volaní

  • TODO
Značky článkov
# js # rmi # rest # xhr # frontend # javascript

Mohlo by Vás zaujímať:

Generovanie kupónov

Množstvo kusov v balení

GoPay platobná brána

Packeta/zásielkovňa - nasadenie

Komentáre a hodnotenia

Prázdny