Как получить данные для модального из Spat ie MediaLibrary, используя Ajax Запрос - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть таблица категорий с полями (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">&times;</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','');
    }
...