Laravel 7 получить подкатегории и при редактировании поле опции выбирается согласно БД - PullRequest
0 голосов
/ 26 мая 2020

У меня есть несколько динамических c полей, использующих ajax в модальном окне. Категория загружает категорию. У меня он отлично работает при создании продукта (без проблем загружает подкатегорию). Но проблема возникает при редактировании товара (с использованием модального окна).

Вот мой вопрос, как я могу сделать, чтобы была выбрана опция базы данных?

Вот что у меня есть:

Форма

<select class="form-control select2" name="category_id" id="edit_category_{{ $product->id }}" required>
    @forelse($categories as $category)
        <option value="{{ $category->id }}"
            {{ old('category_id', $category->id ) == $product->category->id ? 'selected' : '' }}>
            {{ $category->name }}
        </option>
    @empty
        <option value="">No existen categorías</option>
    @endforelse
</select>

<select class="form-control select2" name="subcategory_id" id="edit-subcategory-{{ $product->id }}" data-old="{{ old('subcategory_id') }}" required>

jQuery

$(document).ready(function(){

var products = @json($productsIds);

function loadSubcategory() {

    $.each(products, function(index, value){
        var categoryId = $('#edit-subcategory-' + value).val();

        if ($.trim(categoryId) != '') {
            $.get('get-subcategories', {category_id: categoryId}, function (subcategories) {

                console.log(subcategories);

                var old = $('#edit-subcategory-' + value).data('old') != '' ? $('#edit-subcategory-' + value).data('old') : '';

                $('#edit-subcategory-' + value).empty();
                $('#edit-subcategory-' + value).append("<option value=''>Selecciona un subcategoría</option>");

                $.each(subcategories, function (index, value) {
                    $('#edit-subcategory-' + value).append("<option value='" + index + "'" + (old == index ? 'selected' : '') + ">" + value +" </option>");
                });
            });
        };
    });
}

loadSubcategory();

$.each(products, function(index, value){
    $('#edit-category-' + value).on('change', loadSubcategory);
});

Маршрут

Route::get('/get-subcategories', 'HomeController@getSubcategories');

Контроллер

public function getSubcategories(Request $request)
{

    if ($request->ajax()) {

        $subcategory = Subcategory::where('category_id', $request->category_id)
            ->where('status', 1)
            ->get();

        foreach ($subcategories as $subcategory) {
            $subcategoriesArray[$subcategory->id] = $subcategory->name;
        }

        return response()->json($subcategoriesArray);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...