ForgeTotal.js 5
de

Total.js 5

Die Seiten 404 und 401 anpassen

Total.js 5 · total5@0.0.19 errors404routing Mit Total.js 5 ausgeführt

Wenn Total.js eine Anfrage nicht bedienen kann, zeigt es eine eingebaute Fehlerseite. Eine Route, deren URL # plus der Statuscode ist, ersetzt sie: ROUTE('#404', fn) für „nicht gefunden“, ROUTE('#401', fn) für „nicht autorisiert“, ebenso für #400, #431 und weitere. Der Handler erhält $ wie jede Route, aber den Status setzt du selbst mit $.response.status: Total.js tut das nicht für dich, wenn ein eigener Handler existiert. Ohne eigenen Handler wird die eingebaute Seite verwendet, und AJAX-Anfragen (Header x-requested-with) erhalten statt HTML einen JSON-Fehler.

$.fallback(code) leitet die aktuelle Anfrage an den Handler für code weiter. So antwortest du aus deinem eigenen Code mit 404 für einen nicht vorhandenen Datensatz oder mit 403 für eine verbotene Ressource.

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();
});