نمونه متد:
public function getFilesForModal(Request $request)
{
$files = File::latest()
->when($request->type, function ($query, $type) {
$query->where('mime_type', 'like', $type . '/%');
})
->when($request->search, function ($query, $search) {
$query->where('original_name', 'like', "%{$search}%");
})
->paginate(12);
return view('admin.files.partials.modal-grid', compact('files'))->render();
}نمونه درخواست ایجکس به این متد:
/**
* Load files via AJAX
*/
function loadModalFiles(url, containerId) {
const searchValue = $('#modal-search').val();
const typeValue = $('#modal-type-filter').val();
const acceptTypes = currentModal.data('accept-types');
$.ajax({
url: url,
method: 'GET',
data: {
_token: $('meta[name="csrf-token"]').attr('content'),
search: searchValue,
type: typeValue || acceptTypes,
},
success: function (response) {
$(`#${containerId}`).html(response);
initializePagination(containerId);
},
error: function (xhr) {
console.error('Error loading files:', xhr);
$(`#${containerId}`).html(`
<div class="alert alert-danger">
خطا در بارگذاری فایلها. لطفاً دوباره تلاش کنید.
</div>
`);
toastr.error('خطا در بارگذاری فایلها');
}
});
}نحوه استفاده:
// Load files when modal opens
$(document).on('show.bs.modal', '[id$="Modal"]', function (e) {
currentModal = $(this);
const modalId = currentModal.attr('id');
const containerId = `modal-files-container-${modalId}`;
loadModalFiles(`/admin/files/modal`, containerId);
});