Anonymous
Можно ли перезаписать все сообщения об ошибках в DataTables собственными?
Сообщение
Anonymous » 09 янв 2025, 12:41
Я использую DataTables в своем проекте и хочу переопределить все сообщения обратной связи по умолчанию, например те, которые отображаются, когда записи не найдены или при загрузке данных, одним настраиваемым сообщением (например, «Произошла ошибка, попробуйте снова.").
Я понимаю, что такие параметры, как язык, позволяют мне переопределить определенные сообщения, такие как ZeroRecords, infoEmpty или loadingRecords. Однако я бы хотел избежать ручной настройки каждого отдельного сообщения. Есть ли способ универсально применить одно пользовательское сообщение ко всем этим сценариям без необходимости определять их по отдельности?
Код: Выделить всё
$(document).ready(function() {
let table = new DataTable('#orders-table', {
dom: 'rtp',
paging: true,
searching: true,
ordering: true,
pageLength: 10,
processing: true,
serverSide: true,
autoWidth: false,
scrollX: false,
scrollCollapse: true,
order: [[0, 'desc']],
ajax: {
url: "{{ $url }}",
data: function(d) {
d.van = $('#van').val();
d.tot = $('#tot').val();
d.resellerKlant = $('#resellerKlant').val();
d.cursus = $('#cursus').val();
@if(auth()->user()->isBeheerder())
d.reseller = $('#reseller').val();
@endif
},
},
columns: [
{
data: 'id',
title: 'Ordernummer',
render: function(data, type, row) {
var formattedNumber = data.toString();
if (formattedNumber.length < 6) {
formattedNumber = ('000000' + formattedNumber).slice(-6);
}
return '#' + formattedNumber;
}
},
@if(auth()->user()->isBeheerder())
{
data: 'reseller_naam',
title: 'Reseller',
},
@endif
{
// data: 'cursus_naam',
title: 'Cursussoort',
render: function(data, type, row) {
return data;
}
},
{
data: 'cursist',
title: 'Cursist',
render: DataTable.render.text(),
width: '250px'
},
{
data: 'resellerklant',
title: 'Organisatie',
render: DataTable.render.text()
},
{
data: 'created_at',
title: 'Aanschaf',
render: function(data) {
return new Date(data).toLocaleDateString();
}
},
{
data: 'created_at',
title: 'Geldig tot',
render: function(data) {
let date = new Date(data);
date.setFullYear(date.getFullYear() + 1);
return date.toLocaleDateString();
}
},
{
data: 'prijs',
title: 'Inkoopprijs',
render: function(data, type, row) {
return new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format(data);
}
},
],
language: {
search: "",
"zeroRecords": "Geen orders gevonden",
"infoEmpty": "Geen orders gevonden",
"emptyTable": "Geen orders gevonden"
}
});
$('#zoekenNaarCursisten').on('input', function() {
var value = $(this).val();
table.search(value).draw();
});
$('#van, #tot, #resellerKlant, #cursus').on('change', function() {
table.ajax.reload();
});
@if(auth()->user()->isBeheerder())
$('#reseller').on('change', function() {
table.ajax.reload();
});
@endif
new TomSelect("#resellerKlant", {
plugins: ['remove_button'],
create: false,
sortField: {
field: "text",
direction: "asc"
},
render: {
no_results: function(data, escape) {
return 'Geen resultaat voor "' + escape(data.input) + '"';
}
}
});
@if(auth()->user()->isBeheerder())
new TomSelect("#reseller", {
plugins: ['remove_button'],
create: false,
sortField: {
field: "text",
direction: "asc"
},
render: {
no_results: function(data, escape) {
return 'Geen resultaat voor "' + escape(data.input) + '"';
}
}
});
$.ajax({
url: "{{ $url }}",
method: 'GET',
data: { action: 'get_cursussen' },
success: function(response) {
if(response.cursussen) {
var cursusSelect = $('#cursus');
cursusSelect.find('option:not(:first)').remove();
$.each(response.cursussen, function(index, cursus) {
cursusSelect.append(
$('').val(cursus.id).text(cursus.text)
);
});
new TomSelect("#cursus", {
plugins: ['remove_button'],
create: false,
sortField: {
field: "text",
direction: "asc"
},
render: {
no_results: function(data, escape) {
return 'Geen resultaat voor "' + escape(data.input) + '"';
}
}
});
}
},
error: function(xhr, status, error) {
console.error('Error fetching cursussoort:', error);
}
});
@else
var cursussen = @json($cursussen);
var cursusSelect = $('#cursus');
$.each(cursussen, function(index, cursus) {
cursusSelect.append(
$('').val(cursus.id).text(cursus.naam)
);
if(cursus.heeft_herhalingstraining){
cursusSelect.append(
$('').val('h_' + cursus.id).text(cursus.naam_herhaling)
);
}
});
new TomSelect("#cursus", {
plugins: ['remove_button'],
create: false,
sortField: {
field: "text",
direction: "asc"
},
render: {
no_results: function(data, escape) {
return 'Geen resultaat voor "' + escape(data.input) + '"';
}
}
});
@endif
});
@endsection
Я надеялся, что эта единая конфигурация будет универсально применять сообщение во всех случаях ошибок.
Подробнее здесь:
https://stackoverflow.com/questions/793 ... custom-one
1736415715
Anonymous
Я использую DataTables в своем проекте и хочу переопределить все сообщения обратной связи по умолчанию, например те, которые отображаются, когда записи не найдены или при загрузке данных, одним настраиваемым сообщением (например, «Произошла ошибка, попробуйте снова."). Я понимаю, что такие параметры, как язык, позволяют мне переопределить определенные сообщения, такие как ZeroRecords, infoEmpty или loadingRecords. Однако я бы хотел избежать ручной настройки каждого отдельного сообщения. Есть ли способ универсально применить одно пользовательское сообщение ко всем этим сценариям без необходимости определять их по отдельности? [code] $(document).ready(function() { let table = new DataTable('#orders-table', { dom: 'rtp', paging: true, searching: true, ordering: true, pageLength: 10, processing: true, serverSide: true, autoWidth: false, scrollX: false, scrollCollapse: true, order: [[0, 'desc']], ajax: { url: "{{ $url }}", data: function(d) { d.van = $('#van').val(); d.tot = $('#tot').val(); d.resellerKlant = $('#resellerKlant').val(); d.cursus = $('#cursus').val(); @if(auth()->user()->isBeheerder()) d.reseller = $('#reseller').val(); @endif }, }, columns: [ { data: 'id', title: 'Ordernummer', render: function(data, type, row) { var formattedNumber = data.toString(); if (formattedNumber.length < 6) { formattedNumber = ('000000' + formattedNumber).slice(-6); } return '#' + formattedNumber; } }, @if(auth()->user()->isBeheerder()) { data: 'reseller_naam', title: 'Reseller', }, @endif { // data: 'cursus_naam', title: 'Cursussoort', render: function(data, type, row) { return data; } }, { data: 'cursist', title: 'Cursist', render: DataTable.render.text(), width: '250px' }, { data: 'resellerklant', title: 'Organisatie', render: DataTable.render.text() }, { data: 'created_at', title: 'Aanschaf', render: function(data) { return new Date(data).toLocaleDateString(); } }, { data: 'created_at', title: 'Geldig tot', render: function(data) { let date = new Date(data); date.setFullYear(date.getFullYear() + 1); return date.toLocaleDateString(); } }, { data: 'prijs', title: 'Inkoopprijs', render: function(data, type, row) { return new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format(data); } }, ], language: { search: "", "zeroRecords": "Geen orders gevonden", "infoEmpty": "Geen orders gevonden", "emptyTable": "Geen orders gevonden" } }); $('#zoekenNaarCursisten').on('input', function() { var value = $(this).val(); table.search(value).draw(); }); $('#van, #tot, #resellerKlant, #cursus').on('change', function() { table.ajax.reload(); }); @if(auth()->user()->isBeheerder()) $('#reseller').on('change', function() { table.ajax.reload(); }); @endif new TomSelect("#resellerKlant", { plugins: ['remove_button'], create: false, sortField: { field: "text", direction: "asc" }, render: { no_results: function(data, escape) { return 'Geen resultaat voor "' + escape(data.input) + '"'; } } }); @if(auth()->user()->isBeheerder()) new TomSelect("#reseller", { plugins: ['remove_button'], create: false, sortField: { field: "text", direction: "asc" }, render: { no_results: function(data, escape) { return 'Geen resultaat voor "' + escape(data.input) + '"'; } } }); $.ajax({ url: "{{ $url }}", method: 'GET', data: { action: 'get_cursussen' }, success: function(response) { if(response.cursussen) { var cursusSelect = $('#cursus'); cursusSelect.find('option:not(:first)').remove(); $.each(response.cursussen, function(index, cursus) { cursusSelect.append( $('').val(cursus.id).text(cursus.text) ); }); new TomSelect("#cursus", { plugins: ['remove_button'], create: false, sortField: { field: "text", direction: "asc" }, render: { no_results: function(data, escape) { return 'Geen resultaat voor "' + escape(data.input) + '"'; } } }); } }, error: function(xhr, status, error) { console.error('Error fetching cursussoort:', error); } }); @else var cursussen = @json($cursussen); var cursusSelect = $('#cursus'); $.each(cursussen, function(index, cursus) { cursusSelect.append( $('').val(cursus.id).text(cursus.naam) ); if(cursus.heeft_herhalingstraining){ cursusSelect.append( $('').val('h_' + cursus.id).text(cursus.naam_herhaling) ); } }); new TomSelect("#cursus", { plugins: ['remove_button'], create: false, sortField: { field: "text", direction: "asc" }, render: { no_results: function(data, escape) { return 'Geen resultaat voor "' + escape(data.input) + '"'; } } }); @endif }); @endsection [/code] Я надеялся, что эта единая конфигурация будет универсально применять сообщение во всех случаях ошибок. Подробнее здесь: [url]https://stackoverflow.com/questions/79342078/is-it-possible-to-overwrite-all-error-messages-in-datatables-with-a-custom-one[/url]