У меня есть таблица категорий с полями (name, slug). Я использую Spat ie MediaLibrary для изображения категории. На мой взгляд, у меня есть модал для создания или редактирования категорий, извлечения данных с помощью запроса ajax. Как я могу получить изображение, используя этот вид запроса? Ввиду того, что мне не нужно использовать вызов ajax, я обычно делал бы что-то вроде {{$ category-> image-> thumb}}, и это работает.
Вот мой модальный код:
<div class="modal fade" id="RegistoModal">
<div class="modal-dialog modal-sm modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Create/Edit Category</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form method="POST" action="{{ route('admin.categories.store') }}" id="modal-form" enctype="multipart/form-data">
@csrf
<input type="hidden" name="id">
<div class="form-group">
<label>Image</label>
<input class="form-control {{ $errors->has('image') ? 'is-invalid' : '' }}" type="file" name="image">
@if($errors->has('image'))
<div class="invalid-feedback">
{{ $errors->first('image') }}
</div>
@endif
</div>
<div class="form-group">
<label>Name</label>
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" required autocomplete="off" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group">
<button type="submit" class="btn btn-light px-5"><i class="icon-lock"></i> Gravar</button>
</div>
</form>
</div>
</div>
</div>
</div>
JS код:
<script>
$('.createEditRecord').click(function(){
var elemSubmitUrl = $(this).attr('data-entry-submit-url');
var elemGetUrl = $(this).attr('data-entry-get-url');
$.ajax({
type: "GET",
url: elemGetUrl,
dataType: "json",
success:function(response)
{
var elemGetUrl = response;
$('input[name="id"]').val(elemGetUrl.id);
$('input[name="name"]').val(elemGetUrl.name);
$('#RegistoModal').modal('show');
},
error:function (xhr, ajaxOptions, thrownError)
{
alert(thrownError);
}
});
});
$('#RegistoModal').on('hidden.bs.modal', function () {
document.getElementById("modal-form").reset();
});
</script>
И методы моего контроллера:
public function categories_edit($id)
{
return Category::findOrFail($id);
}
public function categories_store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|unique:categories,name,'.$request->id,
'slug' => 'unique:categories,slug',
]);
if ($validator->passes()) {
$category = Category::updateOrCreate(
['id' => $request->id],
['name' => $request->name, 'slug' => Str::slug($request->name, '-')]
);
if($request->hasFile('image') && $request->file('image')->isValid()){
$category->addMediaFromRequest('image')->toMediaCollection('CategoryImages');
}
return back()->with('alert-success','');
}
return back()->withErrors($validator)->with('alert-error','');
}