ForgeTotal.js 5
ro

Total.js 5

Personalizează paginile 404 și 401

Total.js 5 · total5@0.0.19 errors404routing Executată cu Total.js 5

Când Total.js nu poate servi o cerere, afișează o pagină de eroare încorporată. O rută al cărei URL este # plus codul de stare o înlocuiește: ROUTE('#404', fn) pentru „negăsit”, ROUTE('#401', fn) pentru „neautorizat”, și la fel pentru #400, #431 și altele. Handlerul primește $ ca orice rută, dar starea o setezi tu cu $.response.status: Total.js nu o face în locul tău când există un handler propriu. Fără handler propriu se folosește pagina încorporată, iar cererile AJAX (antetul x-requested-with) primesc o eroare JSON în loc de HTML.

$.fallback(code) trimite cererea curentă către handlerul pentru code, ceea ce este modul în care răspunzi cu 404 pentru o înregistrare inexistentă sau cu 403 pentru o resursă interzisă din propriul cod.

controllers/errors.js
exports.install = function() {
	ROUTE('#404', not_found);
	ROUTE('#401', unauthorized);
	ROUTE('GET /items/{id}/', item);
	ROUTE('+GET /private/', private_page);
};

var items = { '1': 'First item' };

function item($) {
	var name = items[$.params.id];
	if (name)
		$.json({ name: name });
	else
		$.fallback(404);
}

function private_page($) {
	$.plain('secret');
}

function not_found($) {
	$.response.status = 404;
	$.html('<h1>Nothing here</h1><p>' + $.url.encode() + ' does not exist.</p>');
}

function unauthorized($) {
	$.response.status = 401;
	$.json({ error: 'Please sign in first' });
}

AUTH(function($) {
	$.invalid();
});